Jason Dillon wrote: > I can take a gander at the code... though this is in the sandbox, so I > defer any change making to Jeff.... not like i need people going in an > making changes to gshell or other stuff I have in there... unless they > want me to ;-) >
Feel free to make changes, just let me know what you are changing so we don't bump heads ;-) > But if this is bound for trunk at some point (or peer project status) > its best to get the code in order nowish. > Absolutely...this last huge "check in" was not meant to be clean since Bill Dudney expressed an interest in helping out and asked if I could get what I had into the sandbox so he could look at it and help get the clustering working. I explained that it was not cleaned up and did not compile since it was a refactoring of the AMQ code (just refactored 98% of it today)...and also the reason it's sandbox bound ;-) Normally it would not have been checked in, but I was trying to help get some folks involved. So it was not meant as clean code at the moment...gimme a chance would ya! :-) Jeff > --jason > > > On Sep 15, 2006, at 12:37 AM, Bill Dudney wrote: > >> Hey Jason, >> >> Thanks for the helping hand ;-P >> >> I've submitted a JIRA and a patch; >> >> http://issues.apache.org/jira/browse/GERONIMO-2407 >> >> that does several things; >> >> 1) gets the code to compile - there were several references to other >> packages and old code so i updated all that >> 2) fixes the legal gak mentioned by Jason - a detailed pass over all >> the classes would be appreciated Jason >> 3) formats all the code to standard (no tabs etc) - an indenting pass >> would be great too Jason >> >> Arguably I should have left the formatting for later but since I'd >> already added the legal gak I figured I'd already hosed the diff anyway. >> >> So the substantive changes; >> >> 1) I added NodeInfo and NodeId classs and changed everything that said >> BrokerId or BrokerInfo to NodeId and NodeInfo respectively - the idea >> being that in the old world for this code we had Broker's and the >> 'root' object and in this code its going to be nodes. >> 2) moved the wire format negotioation stuff into the interface - need >> input >> 3) Made the TCPTransportServer use the ObjectStreamWireFormatFactory >> instead of the openwire. >> 4) Added the ObjectStreamWireFormatFactory >> >> feedback is welcome and expected. >> >> TTFN, >> >> -bd- >> >> On Sep 14, 2006, at 11:45 PM, Jason Dillon wrote: >> >>> oooh.... wildcard imports... naughty :-P >>> >>> You might also want to sick to a standard header, nix the html bits: >>> >>> /* >>> * 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, [EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]> 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 >>>> <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 >>>> <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 >>>> <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 >>>> <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 >>>> <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 >>>> <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 >>>> <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 >>>> <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> >>>> >>>> >>> >> >
