Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
BEGIN LICENSE BLOCK ***** Version: CPL 1.0/GPL 2.0/LGPL 2.1 The contents of this file are subject to the Common Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.eclipse.org/legal/cpl-v10.html Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Alternatively, the contents of this file may be used under the terms of either of the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of either the GPL or the LGPL, and not to allow others to use your version of this file under the terms of the CPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the GPL or the LGPL. If you do not delete the provisions above, a recipient may use your version of this file under the terms of any one of the CPL, the GPL or the LGPL. END LICENSE BLOCK ***
 
 package org.jruby.util;
 
 
This class is a wrapper around Adler32 which provides the capability to update the running total. This functionality is provided by quite risky reflection and should be fixed in a better way later on.
 
 public class Adler32Ext implements Checksum {
     private int adler;
     private final Adler32 intern;
 
     private static final Field intern_adler
 
     static {
         try {
              = Adler32.class.getDeclaredField("adler");
             .setAccessible(true);
         } catch(final NoSuchFieldException nsfe) {
             throw new RuntimeException("This class have stopped working, it should be updated and FIXED now.");
         }
     }

    
Creates the basic object with default initial adler.
 
     public Adler32Ext() {
         this(1);
     }

    
Creates the basic object with the adler provided.

Parameters:
adler the number to use as starting point for the Adler-32 algorithm
 
     public Adler32Ext(final int adler) {
         super();
         this.=adler;
         this. = new Adler32();
         setAdlerRef(this.);
     }

    
Sets the adler running total to the specified value.

Parameters:
adler the number to use as current value for the Adler-32 algorithm
 
     public void setAdler(final int adler) {
         this. = adler;
         setAdlerRef(this.);
     }

    
 
     public void update(final int b) {
         this..update(b);
     }

    
 
     public void update(final byte[] bfinal int offfinal int len) {
         this..update(b,off,len);
     }

    
 
    public void update(final byte[] b) {
        this..update(b);
    }

    
    public void reset() {
        this..reset();
	this. = 1;
    }

    
    public long getValue() {
	return this..getValue();
    }

    
Helper method to set the reference through reflection.

Parameters:
val the value to set.
    private void setAdlerRef(final int val) {
        try {
            .setInt(,val);
        } catch(final IllegalAccessException e) {
            throw new IllegalStateException(e.toString());
        }
    }
New to GrepCode? Check out our FAQ X