alfresco-community-repo/source/java/org/alfresco/repo/avm/AVMRemoteOutputStream.java
Britt Park b209f4c073 Exported AuthenticationService via RMI. Insecure for now but we can switch over
to using SSL when needed.  Restructured exports of AVM specific apis to authenticate
remotely and pass the ticket with each remote service call.  These required some changes
to jndi-client and even to the web-client which uses the AVM remote interface within
the Alfresco server.  Oh, the point of this is that since I'm writing some CLTs, I might
as well do them correctly; we'll need the option of security sooner rather than later.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4489 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2006-12-02 00:54:41 +00:00

111 lines
2.7 KiB
Java

/*
* Copyright (C) 2006 Alfresco, Inc.
*
* Licensed under the Mozilla Public License version 1.1
* with a permitted attribution clause. You may obtain a
* copy of the License at
*
* http://www.alfresco.org/legal/license.txt
*
* 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.alfresco.repo.avm;
import java.io.IOException;
import java.io.OutputStream;
import org.alfresco.repo.avm.clt.ClientTicketHolder;
public class AVMRemoteOutputStream extends OutputStream
{
private AVMRemoteTransport fAVMRemote;
private String fHandle;
/**
* Create a new one.
* @param handle The handle returned from an AVMRemote call.
* @param remote The AVMRemote instance.
*/
public AVMRemoteOutputStream(String handle, AVMRemoteTransport remote)
{
fAVMRemote = remote;
fHandle = handle;
}
/**
* Write one character.
* @param b The character.
*/
@Override
public void write(int b)
throws IOException
{
byte [] buff = new byte[1];
buff[0] = (byte)b;
write(buff);
}
/**
* Close the stream.
*/
@Override
public void close()
throws IOException
{
try
{
fAVMRemote.closeOutputHandle(ClientTicketHolder.GetTicket(), fHandle);
}
catch (Exception e)
{
throw new IOException("IO Error: " + e);
}
}
/**
* Write a portion of a block of bytes.
* @param b The buffer containing the data.
* @param off The offset into the buffer.
* @param len The number of bytes to write.
*/
@Override
public void write(byte[] b, int off, int len)
throws IOException
{
try
{
if (off == 0)
{
fAVMRemote.writeOutput(ClientTicketHolder.GetTicket(), fHandle, b, len);
}
else
{
byte [] buff = new byte[len];
System.arraycopy(b, off, buff, 0, len);
fAVMRemote.writeOutput(ClientTicketHolder.GetTicket(), fHandle, buff, len);
}
}
catch (Exception e)
{
throw new IOException("IO Error: " + e);
}
}
/**
* Write a buffer of data.
* @param b The buffer.
*/
@Override
public void write(byte[] b)
throws IOException
{
write(b, 0, b.length);
}
}