geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Dillon <ja...@planet57.com>
Subject Re: svn commit: r446519 [4/4] - in /geronimo/sandbox/gcache: ./ openwire/ openwire/src/ openwire/src/main/ openwire/src/main/java/ openwire/src/main/java/org/ openwire/src/main/java/org/apache/ openwire/src/main/java/org/apache/geronimo/ openwire/src/main/...
Date Fri, 15 Sep 2006 17:51:17 GMT
On Sep 15, 2006, at 2:24 AM, Jeff Genender wrote:
> Copy and paste from AMQ ;-)

Oooh... copy paste... naughty :-P

--jason


>> You might also want to sick to a standard header, nix the html bits:
>
> That was the Intellij template header :(  It seemed to convert  
> breaks to
> <p/>
>
> Jeff
>
>>
>> /*
>> * Licensed to the Apache Software Foundation (ASF) under one
>> * or more contributor license agreements.  See the NOTICE file
>> * distributed with this work for additional information
>> * regarding copyright ownership.  The ASF licenses this file
>> * to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
>> *
>> * Unless required by applicable law or agreed to in writing,
>> * software distributed under the License is distributed on an
>> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> * KIND, either express or implied.  See the License for the
>> * specific language governing permissions and limitations
>> * under the License.
>> */
>>
>> --jason
>>
>>
>> On Sep 14, 2006, at 9:57 PM, jgenender@apache.org wrote:
>>
>>> Added:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/MarshallingSupport.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/ 
>>> main/java/org/apache/geronimo/openwire/util/ 
>>> MarshallingSupport.java?view=auto&rev=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> ---
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/MarshallingSupport.java
>>> (added)
>>> +++
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/MarshallingSupport.java
>>> Thu Sep 14 21:57:24 2006
>>> @@ -0,0 +1,309 @@
>>> +package org.apache.geronimo.openwire.util;
>>> +
>>> +import java.io.*;
>>> +import java.util.*;
>>> +
>>> +/**
>>> + * Copyright 2006 The Apache Software Foundation
>>> + * <p/>
>>> + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * <p/>
>>> + * http://www.apache.org/licenses/LICENSE-2.0
>>> + * <p/>
>>> + * Unless required by applicable law or agreed to in writing,  
>>> software
>>> + * distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing  
>>> permissions and
>>> + * limitations under the License.
>>> + */
>>> +public class MarshallingSupport {
>>> +
>>> +    public static final byte NULL                    = 0;
>>> +    public static final byte BOOLEAN_TYPE            = 1;
>>> +    public static final byte BYTE_TYPE               = 2;
>>> +    public static final byte CHAR_TYPE               = 3;
>>> +    public static final byte SHORT_TYPE              = 4;
>>> +    public static final byte INTEGER_TYPE            = 5;
>>> +    public static final byte LONG_TYPE               = 6;
>>> +    public static final byte DOUBLE_TYPE             = 7;
>>> +    public static final byte FLOAT_TYPE              = 8;
>>> +    public static final byte STRING_TYPE             = 9;
>>> +    public static final byte BYTE_ARRAY_TYPE         = 10;
>>> +    public static final byte MAP_TYPE                = 11;
>>> +    public static final byte LIST_TYPE               = 12;
>>> +    public static final byte BIG_STRING_TYPE         = 13;
>>> +
>>> +    static  public void marshalPrimitiveMap(Map map,  
>>> DataOutputStream
>>> out) throws IOException {
>>> +        if( map == null ) {
>>> +            out.writeInt(-1);
>>> +        } else {
>>> +            out.writeInt(map.size());
>>> +            for (Iterator iter = map.keySet().iterator();
>>> iter.hasNext();) {
>>> +                String name = (String) iter.next();
>>> +                out.writeUTF(name);
>>> +                Object value = map.get(name);
>>> +                marshalPrimitive(out, value);
>>> +            }
>>> +        }
>>> +    }
>>> +
>>> +    static public Map unmarshalPrimitiveMap(DataInputStream in)
>>> throws IOException {
>>> +        return unmarshalPrimitiveMap(in, Integer.MAX_VALUE);
>>> +    }
>>> +
>>> +    /**
>>> +     * @param in
>>> +     * @return
>>> +     * @throws IOException
>>> +     * @throws IOException
>>> +     */
>>> +    public static Map unmarshalPrimitiveMap(DataInputStream in, int
>>> max_property_size) throws IOException {
>>> +        int size = in.readInt();
>>> +        if( size > max_property_size ) {
>>> +            throw new IOException("Primitive map is larger than the
>>> allowed size: "+size);
>>> +        }
>>> +        if( size < 0 ) {
>>> +            return null;
>>> +        } else {
>>> +            HashMap rc = new HashMap(size);
>>> +            for(int i=0; i < size; i++) {
>>> +                String name = in.readUTF();
>>> +                rc.put(name, unmarshalPrimitive(in));
>>> +            }
>>> +            return rc;
>>> +        }
>>> +
>>> +    }
>>> +
>>> +    public static void marshalPrimitiveList(List list,
>>> DataOutputStream out) throws IOException {
>>> +        out.writeInt(list.size());
>>> +        for (Iterator iter = list.iterator(); iter.hasNext();) {
>>> +            Object element = (Object) iter.next();
>>> +            marshalPrimitive(out, element);
>>> +        }
>>> +    }
>>> +
>>> +    public static List unmarshalPrimitiveList(DataInputStream in)
>>> throws IOException {
>>> +        int size = in.readInt();
>>> +        List answer = new ArrayList(size);
>>> +        while (size-- > 0) {
>>> +            answer.add(unmarshalPrimitive(in));
>>> +        }
>>> +        return answer;
>>> +    }
>>> +
>>> +    static public void marshalPrimitive(DataOutputStream out,  
>>> Object
>>> value) throws IOException {
>>> +        if( value == null ) {
>>> +            out.writeByte(NULL);
>>> +        } else if( value.getClass() == Boolean.class ) {
>>> +            out.writeByte(BOOLEAN_TYPE);
>>> +            out.writeBoolean(((Boolean)value).booleanValue());
>>> +        } else if( value.getClass() == Byte.class ) {
>>> +            out.writeByte(BYTE_TYPE);
>>> +            out.writeByte(((Byte)value).byteValue());
>>> +        } else if( value.getClass() == Character.class ) {
>>> +            out.writeByte(CHAR_TYPE);
>>> +            out.writeChar(((Character)value).charValue());
>>> +        } else if( value.getClass() == Short.class ) {
>>> +            out.writeByte(SHORT_TYPE);
>>> +            out.writeShort(((Short)value).shortValue());
>>> +        } else if( value.getClass() == Integer.class ) {
>>> +            out.writeByte(INTEGER_TYPE);
>>> +            out.writeInt(((Integer)value).intValue());
>>> +        } else if( value.getClass() == Long.class ) {
>>> +            out.writeByte(LONG_TYPE);
>>> +            out.writeLong(((Long)value).longValue());
>>> +        } else if( value.getClass() == Float.class ) {
>>> +            out.writeByte(FLOAT_TYPE);
>>> +            out.writeFloat(((Float)value).floatValue());
>>> +        } else if( value.getClass() == Double.class ) {
>>> +            out.writeByte(DOUBLE_TYPE);
>>> +            out.writeDouble(((Double)value).doubleValue());
>>> +        } else if( value.getClass() == byte[].class ) {
>>> +            out.writeByte(BYTE_ARRAY_TYPE);
>>> +            out.writeInt(((byte[])value).length);
>>> +            out.write(((byte[])value));
>>> +        } else if( value.getClass() == String.class ) {
>>> +            String s = (String)value;
>>> +
>>> +            // If it's too big, out.writeUTF may not able able to
>>> write it out.
>>> +            if( s.length() < Short.MAX_VALUE/4 ) {
>>> +                out.writeByte(STRING_TYPE);
>>> +                out.writeUTF((String)value);
>>> +            } else {
>>> +                out.writeByte(BIG_STRING_TYPE);
>>> +                writeUTF8(out, s);
>>> +            }
>>> +
>>> +        } else if( value instanceof Map) {
>>> +            out.writeByte(MAP_TYPE);
>>> +            marshalPrimitiveMap((Map) value, out);
>>> +        } else if( value instanceof List) {
>>> +            out.writeByte(LIST_TYPE);
>>> +            marshalPrimitiveList((List) value, out);
>>> +        } else {
>>> +            throw new IOException("Object is not a primitive:  
>>> "+value);
>>> +        }
>>> +    }
>>> +
>>> +
>>> +    static public Object unmarshalPrimitive(DataInputStream in)
>>> throws IOException {
>>> +        Object value=null;
>>> +        switch( in.readByte() ) {
>>> +        case BYTE_TYPE:
>>> +            value = new Byte(in.readByte());
>>> +            break;
>>> +        case BOOLEAN_TYPE:
>>> +            value = in.readBoolean() ? Boolean.TRUE :  
>>> Boolean.FALSE;
>>> +            break;
>>> +        case CHAR_TYPE:
>>> +            value = new Character(in.readChar());
>>> +            break;
>>> +        case SHORT_TYPE:
>>> +            value = new Short(in.readShort());
>>> +            break;
>>> +        case INTEGER_TYPE:
>>> +            value = new Integer(in.readInt());
>>> +            break;
>>> +        case LONG_TYPE:
>>> +            value = new Long(in.readLong());
>>> +            break;
>>> +        case FLOAT_TYPE:
>>> +            value = new Float(in.readFloat());
>>> +            break;
>>> +        case DOUBLE_TYPE:
>>> +            value = new Double(in.readDouble());
>>> +            break;
>>> +        case BYTE_ARRAY_TYPE:
>>> +            value = new byte[in.readInt()];
>>> +            in.readFully((byte[])value);
>>> +            break;
>>> +        case STRING_TYPE:
>>> +            value = in.readUTF();
>>> +            break;
>>> +        case BIG_STRING_TYPE:
>>> +            value = readUTF8(in);
>>> +            break;
>>> +        case MAP_TYPE:
>>> +            value = unmarshalPrimitiveMap(in);
>>> +            break;
>>> +        case LIST_TYPE:
>>> +            value = unmarshalPrimitiveList(in);
>>> +            break;
>>> +        }
>>> +        return value;
>>> +    }
>>> +
>>> +    static public void writeUTF8(DataOutput dataOut, String text)
>>> throws IOException {
>>> +        if (text != null) {
>>> +            int strlen = text.length();
>>> +            int utflen = 0;
>>> +            char[] charr = new char[strlen];
>>> +            int c, count = 0;
>>> +
>>> +            text.getChars(0, strlen, charr, 0);
>>> +
>>> +            for (int i = 0; i < strlen; i++) {
>>> +                c = charr[i];
>>> +                if ((c >= 0x0001) && (c <= 0x007F)) {
>>> +                    utflen++;
>>> +                } else if (c > 0x07FF) {
>>> +                    utflen += 3;
>>> +                } else {
>>> +                    utflen += 2;
>>> +                }
>>> +            }
>>> +            //TODO diff: Sun code - removed
>>> +            byte[] bytearr = new byte[utflen + 4]; //TODO diff:  
>>> Sun code
>>> +            bytearr[count++] = (byte) ((utflen >>> 24) & 0xFF);
>>> //TODO diff: Sun code
>>> +            bytearr[count++] = (byte) ((utflen >>> 16) & 0xFF);
>>> //TODO diff: Sun code
>>> +            bytearr[count++] = (byte) ((utflen >>> 8) & 0xFF);
>>> +            bytearr[count++] = (byte) ((utflen >>> 0) & 0xFF);
>>> +            for (int i = 0; i < strlen; i++) {
>>> +                c = charr[i];
>>> +                if ((c >= 0x0001) && (c <= 0x007F)) {
>>> +                    bytearr[count++] = (byte) c;
>>> +                } else if (c > 0x07FF) {
>>> +                    bytearr[count++] = (byte) (0xE0 | ((c >> 12) &
>>> 0x0F));
>>> +                    bytearr[count++] = (byte) (0x80 | ((c >> 6) &
>>> 0x3F));
>>> +                    bytearr[count++] = (byte) (0x80 | ((c >> 0) &
>>> 0x3F));
>>> +                } else {
>>> +                    bytearr[count++] = (byte) (0xC0 | ((c >> 6) &
>>> 0x1F));
>>> +                    bytearr[count++] = (byte) (0x80 | ((c >> 0) &
>>> 0x3F));
>>> +                }
>>> +            }
>>> +            dataOut.write(bytearr);
>>> +
>>> +        } else {
>>> +            dataOut.writeInt(-1);
>>> +        }
>>> +    }
>>> +
>>> +    static public String readUTF8(DataInput dataIn) throws  
>>> IOException {
>>> +        int utflen = dataIn.readInt(); //TODO diff: Sun code
>>> +        if (utflen > -1) {
>>> +            StringBuffer str = new StringBuffer(utflen);
>>> +            byte bytearr[] = new byte[utflen];
>>> +            int c, char2, char3;
>>> +            int count = 0;
>>> +
>>> +            dataIn.readFully(bytearr, 0, utflen);
>>> +
>>> +            while (count < utflen) {
>>> +                c = bytearr[count] & 0xff;
>>> +                switch (c >> 4) {
>>> +                    case 0:
>>> +                    case 1:
>>> +                    case 2:
>>> +                    case 3:
>>> +                    case 4:
>>> +                    case 5:
>>> +                    case 6:
>>> +                    case 7:
>>> +                        /* 0xxxxxxx */
>>> +                        count++;
>>> +                        str.append((char) c);
>>> +                        break;
>>> +                    case 12:
>>> +                    case 13:
>>> +                        /* 110x xxxx 10xx xxxx */
>>> +                        count += 2;
>>> +                        if (count > utflen) {
>>> +                            throw new UTFDataFormatException();
>>> +                        }
>>> +                        char2 = bytearr[count - 1];
>>> +                        if ((char2 & 0xC0) != 0x80) {
>>> +                            throw new UTFDataFormatException();
>>> +                        }
>>> +                        str.append((char) (((c & 0x1F) << 6) |  
>>> (char2
>>> & 0x3F)));
>>> +                        break;
>>> +                    case 14:
>>> +                        /* 1110 xxxx 10xx xxxx 10xx xxxx */
>>> +                        count += 3;
>>> +                        if (count > utflen) {
>>> +                            throw new UTFDataFormatException();
>>> +                        }
>>> +                        char2 = bytearr[count - 2]; //TODO diff:  
>>> Sun
>>> code
>>> +                        char3 = bytearr[count - 1]; //TODO diff:  
>>> Sun
>>> code
>>> +                        if (((char2 & 0xC0) != 0x80) || ((char3 &
>>> 0xC0) != 0x80)) {
>>> +                            throw new UTFDataFormatException();
>>> +                        }
>>> +                        str.append((char) (((c & 0x0F) << 12) |
>>> ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)));
>>> +                        break;
>>> +                    default :
>>> +                        /* 10xx xxxx, 1111 xxxx */
>>> +                        throw new UTFDataFormatException();
>>> +                }
>>> +            }
>>> +            // The number of chars produced may be less than utflen
>>> +            return new String(str);
>>> +        } else {
>>> +            return null;
>>> +        }
>>> +    }
>>> +
>>> +
>>> +}
>>> +
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/MarshallingSupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/MarshallingSupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:keywords = Date Revision
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/MarshallingSupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:mime-type = text/plain
>>>
>>> Added:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceStopper.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/ 
>>> main/java/org/apache/geronimo/openwire/util/ServiceStopper.java? 
>>> view=auto&rev=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> ---
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceStopper.java
>>> (added)
>>> +++
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceStopper.java
>>> Thu Sep 14 21:57:24 2006
>>> @@ -0,0 +1,97 @@
>>> +package org.apache.geronimo.openwire.util;
>>> +
>>> +import org.apache.geronimo.openwire.Service;
>>> +import org.apache.commons.logging.LogFactory;
>>> +import org.apache.commons.logging.Log;
>>> +
>>> +import java.util.Iterator;
>>> +import java.util.List;
>>> +
>>> +/**
>>> + * Copyright 2006 The Apache Software Foundation
>>> + * <p/>
>>> + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * <p/>
>>> + * http://www.apache.org/licenses/LICENSE-2.0
>>> + * <p/>
>>> + * Unless required by applicable law or agreed to in writing,  
>>> software
>>> + * distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing  
>>> permissions and
>>> + * limitations under the License.
>>> + */
>>> +public class ServiceStopper {
>>> +    private Throwable firstException;
>>> +
>>> +     /**
>>> +      * Stops the given service, catching any exceptions that are
>>> thrown.
>>> +      */
>>> +     public void stop(Service service) {
>>> +         try {
>>> +             if( service!=null ) {
>>> +                 service.stop();
>>> +             }
>>> +         }
>>> +         catch (Exception e) {
>>> +             onException(service, e);
>>> +         }
>>> +     }
>>> +
>>> +     /**
>>> +      * Performs the given code to stop some service handling the
>>> exceptions
>>> +      * which may be thrown properly
>>> +      */
>>> +     public void run(Callback stopClosure) {
>>> +         try {
>>> +             stopClosure.execute();
>>> +         }
>>> +         catch (Throwable e) {
>>> +             onException(stopClosure, e);
>>> +         }
>>> +     }
>>> +
>>> +     /**
>>> +      * Stops a list of services
>>> +      */
>>> +     public void stopServices(List services) {
>>> +         for (Iterator iter = services.iterator(); iter.hasNext 
>>> ();) {
>>> +             Service service = (Service) iter.next();
>>> +             stop(service);
>>> +         }
>>> +     }
>>> +
>>> +     public void onException(Object owner, Throwable e) {
>>> +         logError(owner, e);
>>> +         if (firstException == null) {
>>> +             firstException = e;
>>> +         }
>>> +     }
>>> +
>>> +     /**
>>> +      * Throws the first exception that was thrown if there was  
>>> one.
>>> +      */
>>> +     public void throwFirstException() throws Exception {
>>> +         if (firstException != null) {
>>> +             if (firstException instanceof Exception) {
>>> +                 Exception e = (Exception) firstException;
>>> +                 throw e;
>>> +             }
>>> +             else if (firstException instanceof RuntimeException) {
>>> +                 RuntimeException e = (RuntimeException)  
>>> firstException;
>>> +                 throw e;
>>> +             }
>>> +             else {
>>> +                 throw new RuntimeException("Unknown type of
>>> exception: " + firstException, firstException);
>>> +             }
>>> +         }
>>> +     }
>>> +
>>> +     protected void logError(Object service, Throwable e) {
>>> +         Log log = LogFactory.getLog(service.getClass());
>>> +         log.error("Could not stop service: " + service + ".  
>>> Reason:
>>> " + e, e);
>>> +     }
>>> +
>>> +
>>> +}
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceStopper.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceStopper.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:keywords = Date Revision
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceStopper.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:mime-type = text/plain
>>>
>>> Added:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceSupport.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/ 
>>> main/java/org/apache/geronimo/openwire/util/ServiceSupport.java? 
>>> view=auto&rev=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> ---
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceSupport.java
>>> (added)
>>> +++
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceSupport.java
>>> Thu Sep 14 21:57:24 2006
>>> @@ -0,0 +1,88 @@
>>> +package org.apache.geronimo.openwire.util;
>>> +
>>> +import
>>> edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicBoolean;
>>> +import org.apache.geronimo.openwire.Service;
>>> +import org.apache.commons.logging.Log;
>>> +import org.apache.commons.logging.LogFactory;
>>> +
>>> +/**
>>> + * Copyright 2006 The Apache Software Foundation
>>> + * <p/>
>>> + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * <p/>
>>> + * http://www.apache.org/licenses/LICENSE-2.0
>>> + * <p/>
>>> + * Unless required by applicable law or agreed to in writing,  
>>> software
>>> + * distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing  
>>> permissions and
>>> + * limitations under the License.
>>> + */
>>> +public abstract class ServiceSupport implements Service {
>>> +    private static final Log log =
>>> LogFactory.getLog(ServiceSupport.class);
>>> +
>>> +    private AtomicBoolean started = new AtomicBoolean(false);
>>> +    private AtomicBoolean stopping = new AtomicBoolean(false);
>>> +    private AtomicBoolean stopped = new AtomicBoolean(false);
>>> +
>>> +    public static void dispose(Service service) {
>>> +        try {
>>> +            service.stop();
>>> +        }
>>> +        catch (Exception e) {
>>> +            log.debug("Could not stop service: " + service + ".
>>> Reason: " + e, e);
>>> +        }
>>> +    }
>>> +
>>> +    public void start() throws Exception {
>>> +        if (started.compareAndSet(false, true)) {
>>> +            doStart();
>>> +        }
>>> +    }
>>> +
>>> +    public void stop() throws Exception {
>>> +        if (stopped.compareAndSet(false, true)) {
>>> +            stopping.set(true);
>>> +            ServiceStopper stopper = new ServiceStopper();
>>> +            try {
>>> +                doStop(stopper);
>>> +            }
>>> +            catch (Exception e) {
>>> +                stopper.onException(this, e);
>>> +            }
>>> +            stopped.set(true);
>>> +            started.set(false);
>>> +            stopping.set(false);
>>> +            stopper.throwFirstException();
>>> +        }
>>> +    }
>>> +
>>> +    /**
>>> +     * @return true if this service has been started
>>> +     */
>>> +    public boolean isStarted() {
>>> +        return started.get();
>>> +    }
>>> +
>>> +    /**
>>> +     * @return true if this service is in the process of closing
>>> +     */
>>> +    public boolean isStopping() {
>>> +        return stopping.get();
>>> +    }
>>> +
>>> +
>>> +    /**
>>> +     * @return true if this service is closed
>>> +     */
>>> +    public boolean isStopped() {
>>> +        return stopped.get();
>>> +    }
>>> +
>>> +    protected abstract void doStop(ServiceStopper stopper) throws
>>> Exception;
>>> +
>>> +    protected abstract void doStart() throws Exception;
>>> +}
>>> +
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceSupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceSupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:keywords = Date Revision
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/ServiceSupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:mime-type = text/plain
>>>
>>> Added:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/URISupport.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/ 
>>> main/java/org/apache/geronimo/openwire/util/URISupport.java? 
>>> view=auto&rev=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> ---
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/URISupport.java
>>> (added)
>>> +++
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/URISupport.java
>>> Thu Sep 14 21:57:24 2006
>>> @@ -0,0 +1,295 @@
>>> +package org.apache.geronimo.openwire.util;
>>> +
>>> +import java.net.URI;
>>> +import java.net.URISyntaxException;
>>> +import java.net.URLDecoder;
>>> +import java.net.URLEncoder;
>>> +import java.util.*;
>>> +import java.io.UnsupportedEncodingException;
>>> +
>>> +/**
>>> + * Copyright 2006 The Apache Software Foundation
>>> + * <p/>
>>> + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + * <p/>
>>> + * http://www.apache.org/licenses/LICENSE-2.0
>>> + * <p/>
>>> + * Unless required by applicable law or agreed to in writing,  
>>> software
>>> + * distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing  
>>> permissions and
>>> + * limitations under the License.
>>> + */
>>> +public class URISupport {
>>> +
>>> +    public static class CompositeData {
>>> +        String scheme;
>>> +        String path;
>>> +        URI components[];
>>> +        Map parameters;
>>> +        String fragment;
>>> +        public String host;
>>> +
>>> +        public URI[] getComponents() {
>>> +            return components;
>>> +        }
>>> +        public String getFragment() {
>>> +            return fragment;
>>> +        }
>>> +        public Map getParameters() {
>>> +            return parameters;
>>> +        }
>>> +        public String getScheme() {
>>> +            return scheme;
>>> +        }
>>> +        public String getPath() {
>>> +            return path;
>>> +        }
>>> +        public String getHost() {
>>> +            return host;
>>> +        }
>>> +
>>> +        public URI toURI() throws URISyntaxException {
>>> +            StringBuffer sb = new StringBuffer();
>>> +            if( scheme!=null ) {
>>> +                sb.append(scheme);
>>> +                sb.append(':');
>>> +            }
>>> +
>>> +            if( host!=null && host.length()!=0 ) {
>>> +                sb.append(host);
>>> +            } else {
>>> +                sb.append('(');
>>> +                for (int i = 0; i < components.length; i++) {
>>> +                    if( i!=0 )
>>> +                        sb.append(',');
>>> +                    sb.append(components[i].toString());
>>> +                }
>>> +                sb.append(')');
>>> +            }
>>> +
>>> +            if( path !=null ) {
>>> +                sb.append('/');
>>> +                sb.append(path);
>>> +            }
>>> +            if(!parameters.isEmpty()) {
>>> +                sb.append("?");
>>> +                sb.append(createQueryString(parameters));
>>> +            }
>>> +            if( fragment!=null ) {
>>> +                sb.append("#");
>>> +                sb.append(fragment);
>>> +            }
>>> +            return new URI(sb.toString());
>>> +        }
>>> +    }
>>> +
>>> +    public static Map parseQuery(String uri) throws  
>>> URISyntaxException{
>>> +        try{
>>> +            Map rc=new HashMap();
>>> +            if(uri!=null){
>>> +                String[] parameters=uri.split("&");
>>> +                for(int i=0;i<parameters.length;i++){
>>> +                    int p=parameters[i].indexOf("=");
>>> +                    if(p>=0){
>>> +                        String name=
>>> URLDecoder.decode(parameters[i].substring(0,p),"UTF-8");
>>> +                        String
>>> value=URLDecoder.decode(parameters[i].substring(p+1),"UTF-8");
>>> +                        rc.put(name,value);
>>> +                    }else{
>>> +                        rc.put(parameters[i],null);
>>> +                    }
>>> +                }
>>> +            }
>>> +            return rc;
>>> +        }catch(UnsupportedEncodingException e){
>>> +            throw (URISyntaxException) new
>>> URISyntaxException(e.toString(),"Invalid encoding").initCause(e);
>>> +        }
>>> +    }
>>> +
>>> +    public static Map parseParamters(URI uri) throws
>>> URISyntaxException {
>>> +        return uri.getQuery()==null ? Collections.EMPTY_MAP :
>>> parseQuery(stripPrefix(uri.getQuery(), "?"));
>>> +    }
>>> +
>>> +    /**
>>> +     * Removes any URI query from the given uri
>>> +     */
>>> +    public static URI removeQuery(URI uri) throws  
>>> URISyntaxException {
>>> +        return createURIWithQuery(uri, null);
>>> +    }
>>> +
>>> +    /**
>>> +     * Creates a URI with the given query
>>> +     */
>>> +    public static URI createURIWithQuery(URI uri, String query)
>>> throws URISyntaxException {
>>> +        return new URI(uri.getScheme(), uri.getUserInfo(),
>>> uri.getHost(), uri.getPort(), uri.getPath(), query,  
>>> uri.getFragment());
>>> +    }
>>> +
>>> +    public static CompositeData parseComposite(URI uri) throws
>>> URISyntaxException {
>>> +
>>> +        CompositeData rc = new CompositeData();
>>> +        rc.scheme = uri.getScheme();
>>> +        String ssp = stripPrefix(uri.getSchemeSpecificPart().trim 
>>> (),
>>> "//").trim();
>>> +
>>> +        parseComposite(uri, rc, ssp);
>>> +
>>> +        rc.fragment = uri.getFragment();
>>> +        return rc;
>>> +    }
>>> +
>>> +    private static void parseComposite(URI uri, CompositeData rc,
>>> String ssp) throws URISyntaxException {
>>> +        String componentString;
>>> +        String params;
>>> +
>>> +        if(!checkParenthesis(ssp)){
>>> +            throw new URISyntaxException(uri.toString(), "Not a
>>> matching number of '(' and ')' parenthesis");
>>> +        }
>>> +
>>> +        int p;
>>> +        int intialParen = ssp.indexOf("(");
>>> +        if( intialParen==0 ) {
>>> +            rc.host = ssp.substring(0, intialParen);
>>> +            p = rc.host.indexOf("/");
>>> +            if( p >= 0 ) {
>>> +                rc.path = rc.host.substring(p);
>>> +                rc.host = rc.host.substring(0,p);
>>> +            }
>>> +            p = ssp.lastIndexOf(")");
>>> +            componentString = ssp.substring(intialParen+1,p);
>>> +            params = ssp.substring(p+1).trim();
>>> +
>>> +        } else {
>>> +            componentString = ssp;
>>> +            params="";
>>> +        }
>>> +
>>> +        String components[] = splitComponents(componentString);
>>> +        rc.components=new URI[components.length];
>>> +        for (int i = 0; i < components.length; i++) {
>>> +            rc.components[i] = new URI(components[i].trim());
>>> +        }
>>> +
>>> +        p = params.indexOf("?");
>>> +        if( p >= 0 ) {
>>> +            if( p > 0) {
>>> +                rc.path = stripPrefix(params.substring(0, p), "/");
>>> +            }
>>> +            rc.parameters = parseQuery(params.substring(p+1));
>>> +        } else {
>>> +            if( params.length() > 0 )
>>> +                rc.path = stripPrefix(params, "/");
>>> +            rc.parameters = Collections.EMPTY_MAP;
>>> +        }
>>> +    }
>>> +
>>> +    private static String[] splitComponents(String str) {
>>> +        ArrayList l = new ArrayList();
>>> +
>>> +        int last=0;
>>> +        int depth = 0;
>>> +        char chars[] = str.toCharArray();
>>> +        for( int i=0; i < chars.length; i ++ ) {
>>> +            switch( chars[i] ) {
>>> +            case '(':
>>> +                depth++;
>>> +                break;
>>> +            case ')':
>>> +                depth--;
>>> +                break;
>>> +            case ',':
>>> +                if( depth == 0 ) {
>>> +                    String s = str.substring(last, i);
>>> +                    l.add(s);
>>> +                    last=i+1;
>>> +                }
>>> +            }
>>> +        }
>>> +
>>> +        String s = str.substring(last);
>>> +        if( s.length() !=0 )
>>> +            l.add(s);
>>> +
>>> +        String rc[] = new String[l.size()];
>>> +        l.toArray(rc);
>>> +        return rc;
>>> +    }
>>> +
>>> +    public static String stripPrefix(String value, String prefix) {
>>> +        if( value.startsWith(prefix) )
>>> +            return value.substring(prefix.length());
>>> +        return value;
>>> +    }
>>> +
>>> +    public static URI stripScheme(URI uri) throws  
>>> URISyntaxException {
>>> +        return new
>>> URI(stripPrefix(uri.getSchemeSpecificPart().trim(), "//"));
>>> +    }
>>> +
>>> +    public static String createQueryString(Map options) throws
>>> URISyntaxException {
>>> +        try {
>>> +            if(options.size()>0) {
>>> +                StringBuffer rc = new StringBuffer();
>>> +                boolean first=true;
>>> +                for (Iterator iter = options.keySet().iterator();
>>> iter.hasNext();) {
>>> +                    if( first )
>>> +                        first=false;
>>> +                    else
>>> +                        rc.append("&");
>>> +
>>> +                    String key = (String) iter.next();
>>> +                    String value = (String)options.get(key);
>>> +                    rc.append(URLEncoder.encode(key, "UTF-8"));
>>> +                    rc.append("=");
>>> +                    rc.append(URLEncoder.encode(value, "UTF-8"));
>>> +                }
>>> +                return rc.toString();
>>> +            } else {
>>> +                return "";
>>> +            }
>>> +        } catch (UnsupportedEncodingException e) {
>>> +            throw (URISyntaxException)new
>>> URISyntaxException(e.toString(), "Invalid encoding").initCause(e);
>>> +        }
>>> +    }
>>> +
>>> +    /**
>>> +     * Creates a URI from the original URI and the remaining  
>>> paramaters
>>> +     * @throws URISyntaxException
>>> +     */
>>> +    public static URI createRemainingURI(URI originalURI, Map  
>>> params)
>>> throws URISyntaxException {
>>> +        String s = createQueryString(params);
>>> +        if( s.length()==0 )
>>> +            s = null;
>>> +        return createURIWithQuery(originalURI, s);
>>> +    }
>>> +
>>> +    static public URI changeScheme(URI bindAddr, String scheme)
>>> throws URISyntaxException {
>>> +        return new URI(scheme, bindAddr.getUserInfo(),
>>> bindAddr.getHost(), bindAddr.getPort(), bindAddr.getPath(),
>>> bindAddr.getQuery(), bindAddr.getFragment());
>>> +    }
>>> +
>>> +    public static boolean checkParenthesis(String str){
>>> +        boolean result=true;
>>> +        if(str!=null){
>>> +            int open=0;
>>> +            int closed=0;
>>> +
>>> +            int i=0;
>>> +            while((i=str.indexOf('(',i)) >=0 ){
>>> +                i++;
>>> +                open++;
>>> +            }
>>> +            i=0;
>>> +            while((i=str.indexOf(')',i)) >=0 ){
>>> +                i++;
>>> +                closed++;
>>> +            }
>>> +            result = open == closed;
>>> +        }
>>> +        return result;
>>> +    }
>>> +
>>> +    public int indexOfParenthesisMatch(String str){
>>> +        int result = -1;
>>> +
>>> +        return result;
>>> +    }
>>> +}
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/URISupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/URISupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:keywords = Date Revision
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/util/URISupport.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:mime-type = text/plain
>>>
>>> Added:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/ObjectStreamWireFormat.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/ 
>>> main/java/org/apache/geronimo/openwire/wireformat/ 
>>> ObjectStreamWireFormat.java?view=auto&rev=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> ---
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/ObjectStreamWireFormat.java
>>> (added)
>>> +++
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/ObjectStreamWireFormat.java
>>> Thu Sep 14 21:57:24 2006
>>> @@ -0,0 +1,75 @@
>>> +/**
>>> + *
>>> + * Licensed to the Apache Software Foundation (ASF) under one or  
>>> more
>>> + * contributor license agreements.  See the NOTICE file  
>>> distributed with
>>> + * this work for additional information regarding copyright  
>>> ownership.
>>> + * The ASF licenses this file to You under the Apache License,
>>> Version 2.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.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing,  
>>> software
>>> + * distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing  
>>> permissions and
>>> + * limitations under the License.
>>> + */
>>> +package org.apache.geronimo.openwire.wireformat;
>>> +
>>> +import java.io.DataInputStream;
>>> +import java.io.DataOutputStream;
>>> +import java.io.IOException;
>>> +import java.io.ObjectOutputStream;
>>> +
>>> +import org.apache.geronimo.openwire.util.ByteSequence;
>>> +import org.apache.geronimo.openwire.util.ByteArrayOutputStream;
>>> +import org.apache.geronimo.openwire.util.ByteArrayInputStream;
>>> +import
>>> org.apache.geronimo.openwire.util.ClassLoadingAwareObjectInputStream 
>>> ;
>>> +
>>> +/**
>>> + * A simple implementation which uses Object Stream serialization.
>>> + *
>>> + * @version $Revision$
>>> + */
>>> +public class ObjectStreamWireFormat implements WireFormat {
>>> +
>>> +    public ByteSequence marshal(Object command) throws  
>>> IOException {
>>> +        ByteArrayOutputStream baos = new ByteArrayOutputStream();
>>> +        DataOutputStream ds = new DataOutputStream(baos);
>>> +        marshal(command, ds);
>>> +        ds.close();
>>> +        return baos.toByteSequence();
>>> +    }
>>> +
>>> +    public Object unmarshal(ByteSequence packet) throws  
>>> IOException {
>>> +        return unmarshal(new DataInputStream(new
>>> ByteArrayInputStream(packet)));
>>> +    }
>>> +
>>> +    public void marshal(Object command, DataOutputStream ds) throws
>>> IOException {
>>> +        ObjectOutputStream out = new ObjectOutputStream(ds);
>>> +        out.writeObject(command);
>>> +        out.flush();
>>> +        out.reset();
>>> +    }
>>> +
>>> +    public Object unmarshal(DataInputStream ds) throws  
>>> IOException {
>>> +        try {
>>> +            ClassLoadingAwareObjectInputStream in = new
>>> ClassLoadingAwareObjectInputStream(ds);
>>> +            Object command;
>>> +            command = in.readObject();
>>> +            in.close();
>>> +            return command;
>>> +        } catch (ClassNotFoundException e) {
>>> +            throw (IOException)new IOException("unmarshal failed:
>>> "+e).initCause(e);
>>> +        }
>>> +    }
>>> +
>>> +    public void setVersion(int version) {
>>> +    }
>>> +
>>> +    public int getVersion() {
>>> +        return 0;
>>> +    }
>>> +
>>> +}
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/ObjectStreamWireFormat.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/ObjectStreamWireFormat.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:keywords = Date Revision
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/ObjectStreamWireFormat.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:mime-type = text/plain
>>>
>>> Added:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormat.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/ 
>>> main/java/org/apache/geronimo/openwire/wireformat/WireFormat.java? 
>>> view=auto&rev=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> ---
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormat.java
>>> (added)
>>> +++
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormat.java
>>> Thu Sep 14 21:57:24 2006
>>> @@ -0,0 +1,65 @@
>>> +/**
>>> + *
>>> + * Licensed to the Apache Software Foundation (ASF) under one or  
>>> more
>>> + * contributor license agreements.  See the NOTICE file  
>>> distributed with
>>> + * this work for additional information regarding copyright  
>>> ownership.
>>> + * The ASF licenses this file to You under the Apache License,
>>> Version 2.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.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing,  
>>> software
>>> + * distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing  
>>> permissions and
>>> + * limitations under the License.
>>> + */
>>> +package org.apache.geronimo.openwire.wireformat;
>>> +
>>> +import java.io.DataInputStream;
>>> +import java.io.DataOutputStream;
>>> +import java.io.IOException;
>>> +
>>> +import org.apache.geronimo.openwire.util.ByteSequence;
>>> +
>>> +
>>> +/**
>>> + * Provides a mechanism to marshal commands into and out of packets
>>> + * or into and out of streams, Channels and Datagrams.
>>> + *
>>> + * @version $Revision$
>>> + */
>>> +public interface WireFormat {
>>> +
>>> +    /**
>>> +     * Packet based marshaling
>>> +     */
>>> +    ByteSequence marshal(Object command) throws IOException;
>>> +
>>> +    /**
>>> +     * Packet based un-marshaling
>>> +     */
>>> +    Object unmarshal(ByteSequence packet) throws IOException;
>>> +
>>> +    /**
>>> +     * Stream based marshaling
>>> +     */
>>> +    void marshal(Object command, DataOutputStream out) throws
>>> IOException;
>>> +
>>> +    /**
>>> +     * Packet based un-marshaling
>>> +     */
>>> +    Object unmarshal(DataInputStream in) throws IOException;
>>> +
>>> +    /**
>>> +     * @param version - the version of the wire format
>>> +     */
>>> +    public void setVersion(int version);
>>> +
>>> +    /**
>>> +     * @return the version of the wire format
>>> +     */
>>> +    public int getVersion();
>>> +
>>> +}
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormat.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormat.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:keywords = Date Revision
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormat.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:mime-type = text/plain
>>>
>>> Added:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormatFactory.java
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/ 
>>> main/java/org/apache/geronimo/openwire/wireformat/ 
>>> WireFormatFactory.java?view=auto&rev=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> ---
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormatFactory.java
>>> (added)
>>> +++
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormatFactory.java
>>> Thu Sep 14 21:57:24 2006
>>> @@ -0,0 +1,22 @@
>>> +/**
>>> + *
>>> + * Licensed to the Apache Software Foundation (ASF) under one or  
>>> more
>>> + * contributor license agreements.  See the NOTICE file  
>>> distributed with
>>> + * this work for additional information regarding copyright  
>>> ownership.
>>> + * The ASF licenses this file to You under the Apache License,
>>> Version 2.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.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing,  
>>> software
>>> + * distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> + * See the License for the specific language governing  
>>> permissions and
>>> + * limitations under the License.
>>> + */
>>> +package org.apache.geronimo.openwire.wireformat;
>>> +
>>> +public interface WireFormatFactory {
>>> +    WireFormat createWireFormat();
>>> +}
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormatFactory.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:eol-style = native
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormatFactory.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:keywords = Date Revision
>>>
>>> Propchange:
>>> geronimo/sandbox/gcache/openwire/src/main/java/org/apache/ 
>>> geronimo/openwire/wireformat/WireFormatFactory.java
>>>
>>> -------------------------------------------------------------------- 
>>> ----------
>>>
>>>     svn:mime-type = text/plain
>>>
>>> Modified: geronimo/sandbox/gcache/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/sandbox/gcache/pom.xml? 
>>> view=diff&rev=446519&r1=446518&r2=446519
>>>
>>> ==================================================================== 
>>> ==========
>>>
>>> --- geronimo/sandbox/gcache/pom.xml (original)
>>> +++ geronimo/sandbox/gcache/pom.xml Thu Sep 14 21:57:24 2006
>>> @@ -17,6 +17,7 @@
>>>      </scm>
>>>
>>>      <modules>
>>> +        <module>openwire</module>
>>>          <module>client</module>
>>>          <module>server</module>
>>>      </modules>
>>> @@ -42,6 +43,12 @@
>>>                  <groupId>backport-util-concurrent</groupId>
>>>                  <artifactId>backport-util-concurrent</artifactId>
>>>                  <version>2.0_01_pd</version>
>>> +            </dependency>
>>> +
>>> +            <dependency>
>>> +                <groupId>commons-logging</groupId>
>>> +                <artifactId>commons-logging</artifactId>
>>> +                <version>1.0.4</version>
>>>              </dependency>
>>>
>>>              <dependency>
>>>
>>>


Mime
View raw message