View Javadoc

1   /*** 
2    * 
3    * Copyright 2004 Hiram Chirino
4    * 
5    * Licensed under the Apache License, Version 2.0 (the "License"); 
6    * you may not use this file except in compliance with the License. 
7    * You may obtain a copy of the License at 
8    * 
9    * http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, 
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
14   * See the License for the specific language governing permissions and 
15   * limitations under the License. 
16   * 
17   **/
18  package org.activeio.adapter;
19  
20  import java.io.IOException;
21  import java.net.URI;
22  
23  import org.activeio.AsynchChannelFactory;
24  import org.activeio.SynchChannel;
25  import org.activeio.SynchChannelFactory;
26  import org.activeio.SynchChannelServer;
27  
28  /***
29   * @version $Revision$
30   */
31  final public class AsynchToSynchChannelFactoryAdaptor implements SynchChannelFactory {
32      
33      private AsynchChannelFactory asynchChannelFactory;
34      
35      static public SynchChannelFactory adapt(AsynchChannelFactory channelFactory ) {
36  
37          // It might not need adapting
38          if( channelFactory instanceof SynchChannelServer ) {
39              return (SynchChannelFactory) channelFactory;
40          }
41  
42          // Can we just just undo the adaptor
43          if( channelFactory.getClass() == SynchToAsynchChannelFactoryAdaptor.class ) {
44              return ((SynchToAsynchChannelFactoryAdaptor)channelFactory).getSynchChannelFactory();
45          }
46          
47          return new AsynchToSynchChannelFactoryAdaptor((AsynchChannelFactory)channelFactory);        
48      }
49      
50      
51      private AsynchToSynchChannelFactoryAdaptor(AsynchChannelFactory asynchChannelFactory) {
52          this.asynchChannelFactory = asynchChannelFactory;
53      }
54          
55      public SynchChannel openSynchChannel(URI location) throws IOException {
56          return AsynchToSynchChannelAdapter.adapt( asynchChannelFactory.openAsynchChannel(location) );
57      }
58      
59      public SynchChannelServer bindSynchChannel(URI location) throws IOException {
60          return AsynchToSynchChannelServerAdapter.adapt(asynchChannelFactory.bindAsynchChannel(location));
61      }
62      
63      public AsynchChannelFactory getAsynchChannelFactory() {
64          return asynchChannelFactory;
65      }
66  }