Package org.apache.beehive.netui.util.internal.concurrent

Examples of org.apache.beehive.netui.util.internal.concurrent.InternalConcurrentHashMap$Segment


    public void addSegment(short startCode, short endCode, char[] map) {
        if (map.length != (endCode - startCode) + 1) {
            throw new IllegalArgumentException("Wrong number of entries in map");
        }
       
        Segment s = new Segment(startCode, endCode, true);
        // make sure we remove any old entries
        this.segments.remove(s);
        this.segments.put(s, map);
    }
View Full Code Here


   
    /**
     * Add a segment with an idDelta
     */
    public void addSegment(short startCode, short endCode, short idDelta) {
        Segment s = new Segment(startCode, endCode, false);
        // make sure we remove any old entries
        this.segments.remove(s);
        this.segments.put(s, Integer.valueOf(idDelta));
    }
View Full Code Here

   
    /**
     * Remove a segment
     */
    public void removeSegment(short startCode, short endCode) {
        Segment s = new Segment(startCode, endCode, true);
        this.segments.remove(s);
    }
View Full Code Here

        // add the size of each segment header
        size += this.segments.size() * 8;
       
        // add the total number of mappings times the size of a mapping
        for (Iterator i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = (Segment) i.next();
           
            // see if there's a map
            if (s.hasMap) {
                // if there is, add its size
                char[] map = (char[]) this.segments.get(s);
View Full Code Here

     */
    @Override
  public char map(char src) {
        // find first segment with endcode > src
        for (Iterator i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = (Segment) i.next();
           
            if (s.endCode >= src) {
                // are we within range?
                if (s.startCode <= src) {
                    if (s.hasMap) {
View Full Code Here

     */
    @Override
  public char reverseMap(short glyphID) {
        // look at each segment
        for (Iterator i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = (Segment) i.next();
           
            // see if we have a map or a delta
            if (s.hasMap) {
                char[] map = (char[]) this.segments.get(s);
               
View Full Code Here

        buf.putShort(getEntrySelector());
        buf.putShort(getRangeShift());
       
        // write the endCodes
        for (Iterator<Segment> i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = i.next();
            buf.putShort((short) s.endCode);
        }
       
        // write the pad
        buf.putShort((short) 0);
       
        // write the startCodes
        for (Iterator<Segment> i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = i.next();
            buf.putShort((short) s.startCode);
        }
       
        // write the idDeltas for segments using deltas
        for (Iterator<Segment> i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = i.next();
           
            if (!s.hasMap) {
                Integer idDelta = (Integer) this.segments.get(s);
                buf.putShort(idDelta.shortValue());
            } else {
                buf.putShort((short) 0);
            }
        }
       
        // the start of the glyph array
        int glyphArrayOffset = 16 + (8 * getSegmentCount());
       
        // write the idRangeOffsets and maps for segments using maps
        for (Iterator<Segment> i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = i.next();
           
            if (s.hasMap) {
                // first set the offset, which is the number of bytes from the
                // current position to the current offset
                buf.putShort((short) (glyphArrayOffset - buf.position()));
View Full Code Here

        buf.append(indent + "SearchRange  : " + getSearchRange() + "\n");
        buf.append(indent + "EntrySelector: " + getEntrySelector() + "\n");
        buf.append(indent + "RangeShift   : " + getRangeShift() + "\n");
       
        for (Iterator<Segment> i = this.segments.keySet().iterator(); i.hasNext();) {
            Segment s = i.next();
           
            buf.append(indent);
            buf.append("Segment: " + Integer.toHexString(s.startCode));
            buf.append("-" + Integer.toHexString(s.endCode) + " ");
            buf.append("hasMap: " + s.hasMap + " ");
View Full Code Here

    public int compareTo(Object o) {
            if (!(o instanceof Segment)) {
                return -1;
            }
           
            Segment s = (Segment) o;
       
            // if regions overlap at all, declare the segments equal,
            // to avoid overlap in the segment list
            if (((s.endCode >= this.startCode) && (s.endCode <= this.endCode)) ||
                ((s.startCode >= this.startCode) && (s.startCode <= this.endCode))) {
View Full Code Here

    }
   
    public List/*< Interceptor >*/ getActionInterceptors()
    {
        ServletContext servletContext = getServletContext();
        InternalConcurrentHashMap/*< String, HashMap< String, ArrayList< Interceptor > > >*/ cache =
                ( InternalConcurrentHashMap ) servletContext.getAttribute( CACHE_ATTR );
       
        if ( cache == null )
        {
            //
            // Don't have to synchronize here.  If by some chance two initial requests come in at the same time,
            // one of the caches will get overwritten in the ServletContext, but it will just get recreated the
            // next time.
            //
            cache = new InternalConcurrentHashMap/*< String, HashMap< String, ArrayList< Interceptor > > >*/();
            servletContext.setAttribute( CACHE_ATTR, cache );
        }
       
        String modulePath = getPageFlow().getModulePath();
        String actionName = getActionName();
        HashMap/*< String, ArrayList< Interceptor > >*/ cacheByPageFlow = ( HashMap ) cache.get( modulePath );
        if ( cacheByPageFlow != null )
        {
            List/*< Interceptor >*/ interceptors = ( List ) cacheByPageFlow.get( actionName );
            if ( interceptors != null ) return interceptors;
        }
       
        //
        // We didn't find it in the cache -- build it.
        //
        if ( cacheByPageFlow == null ) cacheByPageFlow = new HashMap/*< String, ArrayList< Interceptor > >*/();
        PageflowActionInterceptors config = ConfigUtil.getConfig().getPageflowActionInterceptors();
        ArrayList/*< Interceptor >*/ interceptorsList = new ArrayList/*< Interceptor >*/();
       
        if ( config == null )
        {
            cacheByPageFlow.put( actionName, interceptorsList );
            cache.put( modulePath, cacheByPageFlow );
            return interceptorsList;
        }
       
        //
        // Global interceptors.
        //
        PageflowActionInterceptors.Global globalInterceptors = config.getGlobal();
       
        if ( globalInterceptors != null )
        {
            addInterceptors( globalInterceptors.getActionInterceptorArray(), interceptorsList, ActionInterceptor.class );
            addSimpleInterceptors( globalInterceptors.getSimpleActionInterceptorArray(), interceptorsList );
        }
       
        //
        // Per-pageflow and per-action interceptors.
        //
        String pageFlowURI = getPageFlow().getURI();
        PageflowActionInterceptors.PerPageflow[] perPageFlowInterceptorsConfig = config.getPerPageflowArray();
       
        if ( perPageFlowInterceptorsConfig != null )
        {
            for ( int i = 0; i < perPageFlowInterceptorsConfig.length; i++ )
            {
                PageflowActionInterceptors.PerPageflow ppfi = perPageFlowInterceptorsConfig[i];
               
                if ( ppfi != null && pageFlowURI.equals( ppfi.getPageflowUri() ) )
                {
                    //
                    // This is a matching page flow -- add per-pageflow interceptors.
                    //
                    addInterceptors( perPageFlowInterceptorsConfig[i].getActionInterceptorArray(), interceptorsList,
                                     ActionInterceptor.class );
                    addSimpleInterceptors( perPageFlowInterceptorsConfig[i].getSimpleActionInterceptorArray(),
                                           interceptorsList );
                   
                    PageflowActionInterceptors.PerPageflow.PerAction[] perActionConfigs =
                            perPageFlowInterceptorsConfig[i].getPerActionArray();
                   
                    if ( perActionConfigs != null )
                    {
                        for ( int j = 0; j < perActionConfigs.length; j++ )
                        {
                            PageflowActionInterceptors.PerPageflow.PerAction perActionConfig = perActionConfigs[j];
                           
                            if ( perActionConfig != null && actionName.equals( perActionConfig.getActionName() ) )
                            {
                                //
                                // This is a matching action -- add per-action interceptors.
                                //
                                addInterceptors( perActionConfig.getActionInterceptorArray(), interceptorsList,
                                                 ActionInterceptor.class );
                                addSimpleInterceptors( perActionConfig.getSimpleActionInterceptorArray(),
                                                       interceptorsList );
                            }
                        }
                    }
                }
            }
        }
       
        cacheByPageFlow.put( actionName, interceptorsList );
        cache.put( modulePath, cacheByPageFlow );
        return interceptorsList;
    }
View Full Code Here

TOP

Related Classes of org.apache.beehive.netui.util.internal.concurrent.InternalConcurrentHashMap$Segment

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.