Package org.omg.CORBA

Examples of org.omg.CORBA.MARSHAL


                        result = orb.create_recursive_tc(recursiveId);
                        break;
                    }
                    catch(org.omg.CORBA.SystemException e)
                    {
                        throw new MARSHAL(
                            "Failed to create recursive typecode: " +
                            e);
                    }
                }

                //if we end up here, we didn't find an entry in either
                //repeatedTCMap and recursiveTCMap
                throw new MARSHAL(
                    "Found indirection marker, but no corresponding "+
                    "original typecode (pos: " + origTCStartPos + ")" );
            }
            case TCKind._tk_null:           // 0
            case TCKind._tk_void:           // 1
            case TCKind._tk_short:          // 2
            case TCKind._tk_long:           // 3
            case TCKind._tk_ushort:         // 4
            case TCKind._tk_ulong:          // 5
            case TCKind._tk_float:          // 6
            case TCKind._tk_double:         // 7
            case TCKind._tk_boolean:        // 8
            case TCKind._tk_char:           // 9
            case TCKind._tk_octet:          // 10
            case TCKind._tk_any:            // 11
            case TCKind._tk_TypeCode:       // 12
            case TCKind._tk_Principal:      // 13
            {
                result = orb.get_primitive_tc(org.omg.CORBA.TCKind.from_int (kind));
                break;
            }
            case TCKind._tk_objref:         // 14
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string ());
                    result = orb.create_interface_tc (id, name);
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    skip(skipAmount);
                    result = cachedObject.typeCode;
                }

                closeEncapsulation();
                break;
            }
            case TCKind._tk_struct:         // 15
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());
                    member_count = read_long();
                    recursiveTCMap.put( startPosition, id );
                    StructMember[] struct_members = new StructMember[member_count];

                    for( int i = 0; i < member_count; i++)
                    {
                        struct_members[i] = new StructMember
                        (
                            read_string(),
                            read_TypeCode (recursiveTCMap, repeatedTCMap),
                            null
                        );
                    }

                    result = ((ORBSingleton) orb).create_struct_tc(id, name, struct_members, false);
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount =  calcSkipAmount(size, start_pos);
                    updateTcMap( recursiveTCMap, start_pos, skipAmount, cachedObject.position );
                    skip (skipAmount);
                    recursiveTCMap.put( startPosition, id );
                    result = cachedObject.typeCode;
                }

                closeEncapsulation();
                break;
            }
            case TCKind._tk_union:          // 16
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());

                    recursiveTCMap.put(startPosition, id );

                    org.omg.CORBA.TypeCode discriminator_type = read_TypeCode(recursiveTCMap, repeatedTCMap);
                    // Use the dealiased discriminator type for the label types.
                    // This works because the JacORB IDL compiler ignores any aliasing
                    // of label types and only the discriminator type is passed on the
                    // wire.
                    org.omg.CORBA.TypeCode orig_disc_type =
                        TypeCode.originalType(discriminator_type);

                    int default_index = read_long();
                    member_count = read_long();

                    UnionMember[] union_members = new UnionMember[member_count];
                    for( int i = 0; i < member_count; i++)
                    {
                        org.omg.CORBA.Any label = orb.create_any();

                        if( i == default_index )
                        {
                            // Default discriminator
                            label.insert_octet( read_octet());
                        }
                        else
                        {
                            // use the dealiased discriminator type to construct labels
                            label.read_value( this, orig_disc_type );
                        }

                        union_members[i] = new UnionMember
                        (
                            read_string(),
                            label,
                            read_TypeCode(recursiveTCMap, repeatedTCMap),
                            null
                        );
                    }

                    result = ((ORBSingleton)orb).create_union_tc(id, name, discriminator_type, union_members, false);
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    updateTcMap(recursiveTCMap, start_pos, skipAmount, cachedObject.position );
                    skip (skipAmount);
                    recursiveTCMap.put( startPosition, id );
                    result = cachedObject.typeCode;
                }

                closeEncapsulation();
                break;
            }
            case TCKind._tk_enum:           // 17
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());
                    member_count = read_long();
                    member_names = new String[member_count];

                    for( int i = 0; i < member_count; i++)
                    {
                        member_names[i] = read_string();
                    }

                    result = ((ORBSingleton)orb).create_enum_tc (id, name, member_names, false);
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    skip (skipAmount);
                    result = cachedObject.typeCode;
                }
                closeEncapsulation();
                break;
            }
            case TCKind._tk_string:         // 18
            {
                result = orb.create_string_tc(read_long());
                break;
            }
            case TCKind._tk_sequence:       // 19
            {
                size = openEncapsulation();
                content_type = read_TypeCode(recursiveTCMap, repeatedTCMap);
                cachedObject = getCachedTypecode(content_type);

                if (cachedObject == null)
                {
                    length = read_long();
                    result = orb.create_sequence_tc(length, content_type);
                    putCachedTypecode(result, new Pair(result, startPosition));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    skip (skipAmount);
                    result = cachedObject.typeCode;
                }

                closeEncapsulation();

                break;
            }
            case TCKind._tk_array:          // 20
            {
                size = openEncapsulation();
                content_type = read_TypeCode(recursiveTCMap, repeatedTCMap);
                cachedObject = getCachedTypecode(content_type);

                if (cachedObject == null)
                {
                    result = orb.create_array_tc(read_long(), content_type );

                    // Store in cache
                    putCachedTypecode (result, new Pair( result, startPosition ));
                }
                else
                {
                    int skipAmount = calcSkipAmount(size, start_pos);

                    skip (skipAmount);
                    result = cachedObject.typeCode;
                }

                closeEncapsulation();

                break;
            }
            case TCKind._tk_alias:          // 21
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());

                    recursiveTCMap.put(startPosition, id );

                    content_type = read_TypeCode( recursiveTCMap, repeatedTCMap);
                    result = orb.create_alias_tc (id, name, content_type );
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    updateTcMap(recursiveTCMap, start_pos, skipAmount, cachedObject.position );
                    skip (skipAmount);
                    recursiveTCMap.put( startPosition, id );
                    result = cachedObject.typeCode;
                }
                closeEncapsulation();
                break;
            }
            case TCKind._tk_except:         // 22
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());
                    member_count = read_long();

                    recursiveTCMap.put(startPosition, id );

                    StructMember[] members = new StructMember[member_count];
                    for( int i = 0; i < member_count; i++)
                    {
                        members[i] = new StructMember
                        (
                            read_string(),
                            read_TypeCode(recursiveTCMap, repeatedTCMap),
                            null
                        );
                    }
                    result = ((ORBSingleton)orb).create_exception_tc (id, name, members, false);

                    // Store in cache
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    updateTcMap(recursiveTCMap, start_pos, skipAmount, cachedObject.position );
                    skip (skipAmount);
                    recursiveTCMap.put( startPosition, id );
                    result = cachedObject.typeCode;
                }

                closeEncapsulation();
                break;
            }
            case TCKind._tk_longlong:       // 23
            case TCKind._tk_ulonglong:      // 24
            {
                result = orb.get_primitive_tc
                (org.omg.CORBA.TCKind.from_int (kind));
                break;
            }
            case TCKind._tk_longdouble:     //25
            {
                throw new MARSHAL("Cannot handle TypeCode with kind " + kind);
            }
            case TCKind._tk_wchar:          // 26
            {
                result = orb.get_primitive_tc
                (org.omg.CORBA.TCKind.from_int (kind));
                break;
            }
            case TCKind._tk_wstring:        // 27
            {
                result = orb.create_wstring_tc(read_long());
                break;
            }
            case TCKind._tk_fixed:          // 28
            {
                result = orb.create_fixed_tc(read_ushort(), read_short() );
                break;
            }
            case TCKind._tk_value:          // 29
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());

                    recursiveTCMap.put(startPosition, id);

                    short type_modifier = read_short();
                    org.omg.CORBA.TypeCode concrete_base_type = read_TypeCode( recursiveTCMap, repeatedTCMap);
                    member_count = read_long();
                    ValueMember[] vMembers = new ValueMember[member_count];

                    for( int i = 0; i < member_count; i++)
                    {
                        vMembers[i] = new ValueMember
                        (
                            read_string(),
                            null, // id
                            null, // defined_in
                            null, // version
                            read_TypeCode (recursiveTCMap, repeatedTCMap),
                            null, // type_def
                            read_short()
                        );
                    }
                    result = orb.create_value_tc
                        (id, name, type_modifier, concrete_base_type, vMembers);
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    updateTcMap(recursiveTCMap, start_pos, skipAmount, cachedObject.position );
                    skip (skipAmount);
                    recursiveTCMap.put( startPosition, id );
                    result = cachedObject.typeCode;
                }
                closeEncapsulation();
                break;
            }
            case TCKind._tk_value_box:      // 30
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());

                    recursiveTCMap.put(startPosition, id);

                    content_type = read_TypeCode( recursiveTCMap, repeatedTCMap);
                    result = orb.create_value_box_tc (id, name, content_type);
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    updateTcMap(recursiveTCMap, start_pos, skipAmount, cachedObject.position );
                    skip (skipAmount);
                    recursiveTCMap.put( startPosition, id );
                    result = cachedObject.typeCode;
                }
                closeEncapsulation();
                break;
            }
            case TCKind._tk_native:         //31
            {
                throw new MARSHAL("Cannot handle TypeCode with kind " + kind);
            }
            case TCKind._tk_abstract_interface:     // 32
            {
                size = openEncapsulation();
                id = validateID (read_string());
                cachedObject = getCachedTypecode( id );

                if (cachedObject == null)
                {
                    name = validateName (read_string());
                    recursiveTCMap.put(startPosition, id);
                    result = orb.create_abstract_interface_tc (id, name);
                    putCachedTypecode (id, new Pair( result, startPosition ));
                }
                else
                {
                    final int skipAmount = calcSkipAmount(size, start_pos);
                    updateTcMap (recursiveTCMap, start_pos, skipAmount, cachedObject.position);
                    skip (skipAmount);
                    recursiveTCMap.put (startPosition, id);
                    result = cachedObject.typeCode;
                }
                closeEncapsulation();
                break;
            }
            default:
            {
                // error, dump buffer contents for diagnosis
                throw new MARSHAL("Cannot handle TypeCode with kind " + kind);
            }
        }

        repeatedTCMap.put(startPosition, result);
        return result;
View Full Code Here


    public void reset()
        throws IOException
    {
        if( pos < 0 )
        {
            throw new MARSHAL("Mark has not been set!");
        }
        pos = marked_pos;
        index = marked_index;
    }
View Full Code Here

                        }
                        case TCKind._tk_float:      // 6
                            // fallthrough
                        case TCKind._tk_double:     // 7
                        {
                            throw new MARSHAL(
                                "Invalid union discriminator type: " + disc);
                        }
                        case TCKind._tk_boolean:    // 8
                        {
                            boolean b = read_boolean();
                            out.write_boolean( b );
                            for(int i = 0 ; i < typeCode.member_count() ; i++)
                            {
                                if( i != def_idx)
                                {
                                    if( b == typeCode.member_label(i).extract_boolean() )
                                    {
                                        member_idx = i;
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                        case TCKind._tk_char:   // 9
                        {
                            char s = read_char();
                            out.write_char(s);
                            for(int i = 0 ; i < typeCode.member_count() ; i++)
                            {
                                if(i != def_idx)
                                {
                                    if(s == typeCode.member_label(i).extract_char())
                                    {
                                        member_idx = i;
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                        case TCKind._tk_octet:      // 10
                            // fallthrough
                        case TCKind._tk_any:        // 11
                            // fallthrough
                        case TCKind._tk_TypeCode:   // 12
                            // fallthrough
                        case TCKind._tk_Principal:  // 13
                            // fallthrough
                        case TCKind._tk_objref:     // 14
                            // fallthrough
                        case TCKind._tk_struct:     // 15
                            // fallthrough
                        case TCKind._tk_union:      // 16
                        {
                            throw new MARSHAL(
                                "Invalid union discriminator type: " + disc);
                        }
                        case TCKind._tk_enum:       // 17
                        {
                            int s = read_long();
                            out.write_long(s);
                            for( int i = 0 ; i < typeCode.member_count() ; i++)
                            {
                                if( i != def_idx)
                                {
                                    int label =
                                    typeCode.member_label(i).create_input_stream().read_long();
                                    if(s == label)
                                    {
                                        member_idx = i;
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                        case TCKind._tk_string:     // 18
                            // fallthrough
                        case TCKind._tk_sequence:   // 19
                            // fallthrough
                        case TCKind._tk_array:      // 20
                            // fallthrough
                        case TCKind._tk_alias:      // 21
                            // fallthrough
                        case TCKind._tk_except:     // 22
                        {
                            throw new MARSHAL(
                                "Invalid union discriminator type: " + disc);
                        }
                        case TCKind._tk_longlong:  // 23
                        {
                            long s = read_longlong();
                            out.write_longlong(s);
                            for(int i = 0 ; i < typeCode.member_count() ; i++)
                            {
                                if(i != def_idx)
                                {
                                    if(s == typeCode.member_label(i).extract_longlong())
                                    {
                                        member_idx = i;
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                        case TCKind._tk_ulonglong:  // 24
                        {
                            long s = read_ulonglong();
                            out.write_ulonglong(s);
                            for(int i = 0 ; i < typeCode.member_count() ; i++)
                            {
                                if(i != def_idx)
                                {
                                    if(s == typeCode.member_label(i).extract_ulonglong())
                                    {
                                        member_idx = i;
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                        default:
                        {
                            throw new MARSHAL("Invalid union discriminator type: " + disc);
                        }
                    } // switch

                    if( member_idx != -1 )
                    {
                        read_value( typeCode.member_type( member_idx ), out );
                    }
                    else if( def_idx != -1 )
                    {
                        read_value( typeCode.member_type( def_idx ), out );
                    }
                    break;
                }
                case TCKind._tk_enum:       // 17
                {
                    out.write_long( read_long() );
                    break;
                }
                case TCKind._tk_string:     // 18
                {
                    out.write_string( read_string());
                    break;
                }
                case TCKind._tk_sequence:   // 19
                {
                    int len = read_long();
                    out.write_long(len);
                    for( int i = 0; i < len; i++ )
                    {
                        read_value( typeCode.content_type(), out );
                    }
                    break;
                }
                case TCKind._tk_array:      // 20
                {
                    int length = typeCode.length();
                    for( int i = 0; i < length; i++ )
                    {
                        read_value( typeCode.content_type(), out );
                    }
                    break;
                }
                case TCKind._tk_alias:      // 21
                {
                    read_value( typeCode.content_type(), out  );
                    break;
                }
                case TCKind._tk_except:     // 22
                {
                    out.write_string( read_string());

                    for( int i = 0; i < typeCode.member_count(); i++)
                    {
                        read_value( typeCode.member_type(i), out );
                    }

                    break;
                }
                case TCKind._tk_longlong:   // 23
                {
                    out.write_longlong( read_longlong());
                    break;
                }
                case TCKind._tk_ulonglong:  // 24
                {
                    out.write_ulonglong( read_ulonglong());
                    break;
                }
                case TCKind._tk_longdouble: // 25
                {
                    throw new org.omg.CORBA.BAD_TYPECODE(
                        "type longdouble not supported in java");
                }
                case TCKind._tk_wchar:      // 26
                {
                    out.write_wchar( read_wchar());
                    break;
                }
                case TCKind._tk_wstring:    // 27
                {
                    out.write_wstring( read_wstring());
                    break;
                }
                case TCKind._tk_fixed:      // 28
                {
                    final short digits = typeCode.fixed_digits();
                    final short scale = typeCode.fixed_scale();
                    final BigDecimal value = read_fixed(digits, scale);

                    if (out instanceof CDROutputStream)
                    {
                        CDROutputStream cdrOut = (CDROutputStream) out;
                        cdrOut.write_fixed(value, digits, scale);
                    }
                    else
                    {
                        // TODO can we remove this? mixed usage orb classes from different vendors ...
                        out.write_fixed (value);
                    }
                    break;
                }
                case TCKind._tk_value:      // 29
                {
                    Serializable val = read_value();
                    ((org.omg.CORBA_2_3.portable.OutputStream)out).write_value(val, typeCode.id());
                    break;
                }
                case TCKind._tk_value_box:  // 30
                {
                    String id = typeCode.id();
                    org.omg.CORBA.portable.BoxedValueHelper helper =
                        ((org.jacorb.orb.ORB)orb).getBoxedValueHelper(id);
                    if (helper == null)
                    {
                        throw new MARSHAL ("No BoxedValueHelper for id " + id);
                    }
                    java.io.Serializable value = read_value(helper);
                    ((org.omg.CORBA_2_3.portable.OutputStream)out).write_value(value, helper);
                    break;
                }
                default:
                {
                    throw new MARSHAL("Cannot handle TypeCode with kind " + kind);
                }
            }
        }
        catch (BadKind ex)
        {
            throw new MARSHAL
                ("When processing TypeCode with kind: " + kind + " caught " + ex);
        }
        catch (Bounds ex)
        {
            throw new MARSHAL
                ("When processing TypeCode with kind: " + kind + " caught " + ex);
        }
    }
View Full Code Here

        int theTag = tag;
        tag = tag & 0xfffffff6;

        if (tag == 0x7fffff00)
        {
            throw new MARSHAL ("missing value type information");
        }
        else if (tag == 0x7fffff02)
        {
            return read_typed_value(start_offset, codebase);
        }
        else if (tag == 0x7fffff06)
        {
            return read_multi_typed_value( start_offset, codebase );
        }
        else
        {
            throw new MARSHAL("unknown value tag: 0x" +
                              Integer.toHexString(theTag) + " (offset=0x" +
                              Integer.toHexString(start_offset) + ")");
        }
    }
View Full Code Here

        {
            return read_multi_typed_value( start_offset, codebase );
        }
        else
        {
            throw new MARSHAL("unknown value tag: 0x" +
                              Integer.toHexString(theTag) + " (offset=0x" +
                              Integer.toHexString(start_offset) + ")");
        }
    }
View Full Code Here

        {
            return read_multi_typed_value(start_offset, codebase);
        }
        else
        {
            throw new MARSHAL("unknown value tag: 0x" +
                              Integer.toHexString(theTag) +
                              " (offset=0x" +
                              Integer.toHexString(start_offset) +
                              ")");
        }
View Full Code Here

            return result;
        }
        else
        {
            throw new MARSHAL("unknown value tag: 0x" +
                              Integer.toHexString(theTag) + " (offset=0x" +
                              Integer.toHexString(start_offset) + ")");
        }
    }
View Full Code Here

                    if( i < repository_ids.length-1 )
                    {
                        continue;
                    }

                    throw new MARSHAL("class not found: " + className);
                }
                break;
            }
            else if (repository_ids[i].startsWith ("IDL:"))
            {
                org.omg.CORBA.portable.ValueFactory factory =
                    ((org.omg.CORBA_2_3.ORB)orb()).lookup_value_factory (repository_ids[i]);

                if (factory != null)
                {
                    currentValueIndex = index;
                    result = factory.read_value (this);
                    break;
                }

                if( i < repository_ids.length-1 )
                {
                    continue;
                }

                throw new MARSHAL ("No factory found for: " + repository_ids[0] );
            }
            else // RMI
            {
                final String className =
                    org.jacorb.ir.RepositoryID.className(repository_ids[i], null);

                try
                {
                    final Class clazz = loadClass(className, codebase);

                    if (IDLEntity.class.isAssignableFrom(clazz))
                    {
                        java.lang.reflect.Method readMethod = null;
                        if (clazz != org.omg.CORBA.Any.class)
                        {
                            String helperClassName = clazz.getName() + "Helper";

                            try
                            {
                                final ClassLoader classLoader = clazz.getClassLoader();
                                final Class helperClass;
                                if (classLoader == null)
                                {
                                    helperClass = ObjectUtil.classForName(helperClassName);
                                }
                                else
                                {
                                    helperClass =
                                        classLoader.loadClass(helperClassName);
                                }

                                Class[] paramTypes = {
                                    org.omg.CORBA.portable.InputStream.class
                                };
                                readMethod =
                                    helperClass.getMethod("read", paramTypes);
                            }
                            catch (ClassNotFoundException e)
                            {
                                throw new MARSHAL("Error loading class " + helperClassName
                                                  + ": " + e);
                            }
                            catch (NoSuchMethodException e)
                            {
                                throw new MARSHAL("No read method in helper class "
                                                  + helperClassName + ": " + e);
                            }
                        }

                        if (readMethod == null)
                        {
                            result = read_any();
                        }
                        else
                        {
                            try
                            {
                                result =
                                    (java.io.Serializable) readMethod.invoke(
                                        null,
                                        new java.lang.Object[] { this });
                            }
                            catch (IllegalAccessException e)
                            {
                                throw new MARSHAL("Internal error: " + e);
                            }
                            catch (java.lang.reflect.InvocationTargetException e)
                            {
                                throw new MARSHAL("Exception unmarshaling IDLEntity: "
                                                  + e.getTargetException());
                            }
                        }
                    }
                    else
                    {
                        result = ValueHandler.readValue(this, index, clazz,
                                                        repository_ids[i],
                                                        null);
                    }
                }
                catch (ClassNotFoundException e)
                {
                    if( i < repository_ids.length-1 )
                    {
                        continue;
                    }

                    throw new MARSHAL ("class not found: " + className);
                }
            }
        }

        // value type instances may be null...
View Full Code Here

        String repId = read_repository_id();

        if (!factory.get_id().equals(repId))
        {
            // just to be sure.
            throw new MARSHAL("unexpected RepositoryID. expected: " + factory.get_id() + " got: " + repId);
        }

        return factory.read_value(this);
    }
View Full Code Here

            index = index + pos - 4;

            String repId = (String)getRepIdMap().get(ObjectUtil.newInteger(index));
            if (repId == null)
            {
                throw new MARSHAL("stale RepositoryID indirection");
            }
            return repId;
        }

        // a new id
View Full Code Here

TOP

Related Classes of org.omg.CORBA.MARSHAL

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.