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  }