/** * Copyright 2010 Voxeo Corporation * * 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 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 com.voxeo.moho.media; import java.util.Map; import javax.media.mscontrol.MediaSession; import javax.media.mscontrol.MsControlException; import javax.media.mscontrol.Parameters; import javax.media.mscontrol.mediagroup.MediaGroup; import com.voxeo.moho.MediaException; import com.voxeo.moho.MediaService; import com.voxeo.moho.MediaServiceFactory; import com.voxeo.moho.event.EventSource; import com.voxeo.moho.spi.ExecutionContext; public class GenericMediaServiceFactory implements MediaServiceFactory { public GenericMediaServiceFactory() { } @Override public <T extends EventSource> MediaService<T> create(final T parent, final MediaSession session, Parameters params) { MediaGroup group = null; try { group = session.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR_SIGNALGENERATOR, params); } catch (final MsControlException e1) { try { group = session.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR, params); } catch (final MsControlException e2) { try { group = session.createMediaGroup(MediaGroup.PLAYER, params); } catch (final MsControlException e3) { throw new MediaException(e3); } } } return new GenericMediaService<T>(parent, group); } @Override public void init(ExecutionContext context, Map<String, String> properties) { } @Override public void destroy() { } @Override public String getName() { return MediaServiceFactory.class.getName(); } }