001 /** 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one or more 004 * contributor license agreements. See the NOTICE file distributed with 005 * this work for additional information regarding copyright ownership. 006 * The ASF licenses this file to You under the Apache License, Version 2.0 007 * (the "License"); you may not use this file except in compliance with 008 * the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 package org.apache.camel.component.file.remote; 019 020 import org.apache.camel.impl.ScheduledPollEndpoint; 021 022 import java.io.ByteArrayOutputStream; 023 024 public abstract class RemoteFileEndpoint<T extends RemoteFileExchange> extends ScheduledPollEndpoint<T> { 025 private RemoteFileBinding binding; 026 private RemoteFileConfiguration configuration; 027 028 public RemoteFileEndpoint(String uri, RemoteFileComponent component, RemoteFileConfiguration configuration) { 029 super(uri, component); 030 this.configuration = configuration; 031 } 032 033 protected RemoteFileBinding createRemoteFileBinding() { 034 return new RemoteFileBinding(); 035 } 036 037 public T createExchange() { 038 return (T) new RemoteFileExchange(getContext(), getBinding()); 039 } 040 041 public T createExchange(String fullFileName, ByteArrayOutputStream outputStream) { 042 return (T) new RemoteFileExchange(getContext(), getBinding(), getConfiguration().getHost(), fullFileName, outputStream); 043 } 044 045 public RemoteFileBinding getBinding() { 046 if (binding == null) { 047 binding = createRemoteFileBinding(); 048 } 049 return binding; 050 } 051 052 public void setBinding(RemoteFileBinding binding) { 053 this.binding = binding; 054 } 055 056 public boolean isSingleton() { 057 return true; 058 } 059 060 public RemoteFileConfiguration getConfiguration() { 061 return configuration; 062 } 063 }