Java Code Examples for com.sun.corba.se.impl.encoding.CodeSetConversion#CTBConverter

The following examples show how to use com.sun.corba.se.impl.encoding.CodeSetConversion#CTBConverter . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CDROutputObject.java    From JDKSourceCode1.8 with MIT License 6 votes vote down vote up
/**
 * Override the default CDR factory behavior to get the
 * negotiated code sets from the connection.
 *
 * These are only called once per message, the first time needed.
 *
 * In the local case, there is no Connection, so use the
 * local code sets.
 */
protected CodeSetConversion.CTBConverter createCharCTBConverter() {
    CodeSetComponentInfo.CodeSetContext codesets = getCodeSets();

    // If the connection doesn't have its negotiated
    // code sets by now, fall back on the defaults defined
    // in CDRInputStream.
    if (codesets == null)
        return super.createCharCTBConverter();

    OSFCodeSetRegistry.Entry charSet
        = OSFCodeSetRegistry.lookupEntry(codesets.getCharCodeSet());

    if (charSet == null)
        throw wrapper.unknownCodeset( charSet ) ;

    return CodeSetConversion.impl().getCTBConverter(charSet,
                                                    isLittleEndian(),
                                                    false);
}
 
Example 2
Source File: CDROutputStream_1_2.java    From jdk1.8-source-analysis with Apache License 2.0 6 votes vote down vote up
public void write_wchar(char x)
{
    // In GIOP 1.2, a wchar is encoded as an unsigned octet length
    // followed by the octets of the converted wchar.  This is good,
    // but it causes problems with our chunking code.  We don't
    // want that octet to get put in a different chunk at the end
    // of the previous fragment.
    //
    // Ensure that this won't happen by overriding write_wchar_array
    // and doing our own handleSpecialChunkBegin/End here.
    CodeSetConversion.CTBConverter converter = getWCharConverter();

    converter.convert(x);

    handleSpecialChunkBegin(1 + converter.getNumBytes());

    write_octet((byte)converter.getNumBytes());

    byte[] result = converter.getBytes();

    // Write the bytes without messing with chunking
    // See CDROutputStream_1_0
    internalWriteOctetArray(result, 0, converter.getNumBytes());

    handleSpecialChunkEnd();
}
 
Example 3
Source File: EncapsOutputStream.java    From TencentKona-8 with GNU General Public License v2.0 6 votes vote down vote up
protected CodeSetConversion.CTBConverter createWCharCTBConverter() {
    if (getGIOPVersion().equals(GIOPVersion.V1_0))
        throw wrapper.wcharDataInGiop10(CompletionStatus.COMPLETED_MAYBE);

    // In the case of GIOP 1.1, we take the byte order of the stream and don't
    // use byte order markers since we're limited to a 2 byte fixed width encoding.
    if (getGIOPVersion().equals(GIOPVersion.V1_1))
        return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.UTF_16,
                                                        isLittleEndian(),
                                                        false);

    // Assume anything else meets GIOP 1.2 requirements
    //
    // Use byte order markers?  If not, use big endian in GIOP 1.2.
    // (formal 00-11-03 15.3.16)

    boolean useBOM = ((ORB)orb()).getORBData().useByteOrderMarkersInEncapsulations();

    return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.UTF_16,
                                                    false,
                                                    useBOM);
}
 
Example 4
Source File: CDROutputStream_1_1.java    From openjdk-jdk8u with GNU General Public License v2.0 6 votes vote down vote up
public void write_wchar(char x)
{
    // In GIOP 1.1, interoperability with wchar is limited
    // to 2 byte fixed width encodings.  CORBA formal 99-10-07 15.3.1.6.
    // Note that the following code prohibits UTF-16 with a byte
    // order marker (which would result in 4 bytes).
    CodeSetConversion.CTBConverter converter = getWCharConverter();

    converter.convert(x);

    if (converter.getNumBytes() != 2)
        throw wrapper.badGiop11Ctb(CompletionStatus.COMPLETED_MAYBE);

    alignAndReserve(converter.getAlignment(),
                    converter.getNumBytes());

    parent.write_octet_array(converter.getBytes(),
                             0,
                             converter.getNumBytes());
}
 
Example 5
Source File: CDROutputStream_1_1.java    From jdk1.8-source-analysis with Apache License 2.0 6 votes vote down vote up
public void write_wchar(char x)
{
    // In GIOP 1.1, interoperability with wchar is limited
    // to 2 byte fixed width encodings.  CORBA formal 99-10-07 15.3.1.6.
    // Note that the following code prohibits UTF-16 with a byte
    // order marker (which would result in 4 bytes).
    CodeSetConversion.CTBConverter converter = getWCharConverter();

    converter.convert(x);

    if (converter.getNumBytes() != 2)
        throw wrapper.badGiop11Ctb(CompletionStatus.COMPLETED_MAYBE);

    alignAndReserve(converter.getAlignment(),
                    converter.getNumBytes());

    parent.write_octet_array(converter.getBytes(),
                             0,
                             converter.getNumBytes());
}
 
Example 6
Source File: CDROutputStream_1_1.java    From TencentKona-8 with GNU General Public License v2.0 6 votes vote down vote up
public void write_wchar(char x)
{
    // In GIOP 1.1, interoperability with wchar is limited
    // to 2 byte fixed width encodings.  CORBA formal 99-10-07 15.3.1.6.
    // Note that the following code prohibits UTF-16 with a byte
    // order marker (which would result in 4 bytes).
    CodeSetConversion.CTBConverter converter = getWCharConverter();

    converter.convert(x);

    if (converter.getNumBytes() != 2)
        throw wrapper.badGiop11Ctb(CompletionStatus.COMPLETED_MAYBE);

    alignAndReserve(converter.getAlignment(),
                    converter.getNumBytes());

    parent.write_octet_array(converter.getBytes(),
                             0,
                             converter.getNumBytes());
}
 
Example 7
Source File: EncapsOutputStream.java    From jdk1.8-source-analysis with Apache License 2.0 6 votes vote down vote up
protected CodeSetConversion.CTBConverter createWCharCTBConverter() {
    if (getGIOPVersion().equals(GIOPVersion.V1_0))
        throw wrapper.wcharDataInGiop10(CompletionStatus.COMPLETED_MAYBE);

    // In the case of GIOP 1.1, we take the byte order of the stream and don't
    // use byte order markers since we're limited to a 2 byte fixed width encoding.
    if (getGIOPVersion().equals(GIOPVersion.V1_1))
        return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.UTF_16,
                                                        isLittleEndian(),
                                                        false);

    // Assume anything else meets GIOP 1.2 requirements
    //
    // Use byte order markers?  If not, use big endian in GIOP 1.2.
    // (formal 00-11-03 15.3.16)

    boolean useBOM = ((ORB)orb()).getORBData().useByteOrderMarkersInEncapsulations();

    return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.UTF_16,
                                                    false,
                                                    useBOM);
}
 
Example 8
Source File: CDROutputStream_1_0.java    From jdk8u60 with GNU General Public License v2.0 5 votes vote down vote up
public void write_char(char x)
{
    CodeSetConversion.CTBConverter converter = getCharConverter();

    converter.convert(x);

    // CORBA formal 99-10-07 15.3.1.6: "In the case of multi-byte encodings
    // of characters, a single instance of the char type may only
    // hold one octet of any multi-byte character encoding."
    if (converter.getNumBytes() > 1)
        throw wrapper.invalidSingleCharCtb(CompletionStatus.COMPLETED_MAYBE);

    write_octet(converter.getBytes()[0]);
}
 
Example 9
Source File: CDROutputStream_1_0.java    From openjdk-jdk8u with GNU General Public License v2.0 5 votes vote down vote up
public void write_char(char x)
{
    CodeSetConversion.CTBConverter converter = getCharConverter();

    converter.convert(x);

    // CORBA formal 99-10-07 15.3.1.6: "In the case of multi-byte encodings
    // of characters, a single instance of the char type may only
    // hold one octet of any multi-byte character encoding."
    if (converter.getNumBytes() > 1)
        throw wrapper.invalidSingleCharCtb(CompletionStatus.COMPLETED_MAYBE);

    write_octet(converter.getBytes()[0]);
}
 
Example 10
Source File: CDROutputStream_1_0.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter getCharConverter() {
    if (charConverter == null)
        charConverter = parent.createCharCTBConverter();

    return charConverter;
}
 
Example 11
Source File: CDROutputStream_1_0.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
protected CodeSetConversion.CTBConverter getCharConverter() {
    if (charConverter == null)
        charConverter = parent.createCharCTBConverter();

    return charConverter;
}
 
Example 12
Source File: CDROutputStream_1_0.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter getWCharConverter() {
    if (wcharConverter == null)
        wcharConverter = parent.createWCharCTBConverter();

    return wcharConverter;
}
 
Example 13
Source File: CDROutputStream.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter createCharCTBConverter() {
    return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.ISO_8859_1);
}
 
Example 14
Source File: CDROutputStream.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter createCharCTBConverter() {
    return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.ISO_8859_1);
}
 
Example 15
Source File: EncapsOutputStream.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter createCharCTBConverter() {
    return CodeSetConversion.impl().getCTBConverter(OSFCodeSetRegistry.ISO_8859_1);
}
 
Example 16
Source File: CDROutputStream_1_0.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
protected CodeSetConversion.CTBConverter getWCharConverter() {
    if (wcharConverter == null)
        wcharConverter = parent.createWCharCTBConverter();

    return wcharConverter;
}
 
Example 17
Source File: CDROutputStream_1_1.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
public void write_wstring(String value)
{
    if (value == null) {
        throw wrapper.nullParam(CompletionStatus.COMPLETED_MAYBE);
    }

    // The length is the number of code points (which are 2 bytes each)
    // including the 2 byte null.  See CORBA formal 99-10-07 15.3.2.7.

    int len = value.length() + 1;

    write_long(len);

    CodeSetConversion.CTBConverter converter = getWCharConverter();

    converter.convert(value);

    internalWriteOctetArray(converter.getBytes(), 0, converter.getNumBytes());

    // Write the 2 byte null ending
    write_short((short)0);
}
 
Example 18
Source File: CDROutputStream_1_0.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter getWCharConverter() {
    if (wcharConverter == null)
        wcharConverter = parent.createWCharCTBConverter();

    return wcharConverter;
}
 
Example 19
Source File: CDROutputStream_1_0.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter getCharConverter() {
    if (charConverter == null)
        charConverter = parent.createCharCTBConverter();

    return charConverter;
}
 
Example 20
Source File: CDROutputObject.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
protected CodeSetConversion.CTBConverter createWCharCTBConverter() {

        CodeSetComponentInfo.CodeSetContext codesets = getCodeSets();

        // If the connection doesn't have its negotiated
        // code sets by now, we have to throw an exception.
        // See CORBA formal 00-11-03 13.9.2.6.
        if (codesets == null) {
            if (getConnection().isServer())
                throw omgWrapper.noClientWcharCodesetCtx() ;
            else
                throw omgWrapper.noServerWcharCodesetCmp() ;
        }

        OSFCodeSetRegistry.Entry wcharSet
            = OSFCodeSetRegistry.lookupEntry(codesets.getWCharCodeSet());

        if (wcharSet == null)
            throw wrapper.unknownCodeset( wcharSet ) ;

        boolean useByteOrderMarkers
            = ((ORB)orb()).getORBData().useByteOrderMarkers();

        // With UTF-16:
        //
        // For GIOP 1.2, we can put byte order markers if we want to, and
        // use the default of big endian otherwise.  (See issue 3405b)
        //
        // For GIOP 1.1, we don't use BOMs and use the endianness of
        // the stream.
        if (wcharSet == OSFCodeSetRegistry.UTF_16) {
            if (getGIOPVersion().equals(GIOPVersion.V1_2)) {
                return CodeSetConversion.impl().getCTBConverter(wcharSet,
                                                                false,
                                                                useByteOrderMarkers);
            }

            if (getGIOPVersion().equals(GIOPVersion.V1_1)) {
                return CodeSetConversion.impl().getCTBConverter(wcharSet,
                                                                isLittleEndian(),
                                                                false);
            }
        }

        // In the normal case, let the converter system handle it
        return CodeSetConversion.impl().getCTBConverter(wcharSet,
                                                        isLittleEndian(),
                                                        useByteOrderMarkers);
    }