| 642 | |
| 643 | template <typename T> |
| 644 | void generate_common(T* node) { |
| 645 | UTL_ScopedName* name = node->name(); |
| 646 | |
| 647 | if (!(idl_global->is_dcps_type(name) || be_global->is_topic_type(node))) { |
| 648 | return; |
| 649 | } |
| 650 | |
| 651 | ACE_CString output_file = be_global->java_arg(); |
| 652 | if (output_file.length()) { |
| 653 | be_global->impl_name_ = output_file; |
| 654 | } |
| 655 | be_global->add_include("idl2jni_jni.h", BE_GlobalData::STREAM_CPP); |
| 656 | |
| 657 | std::string type = scoped(name); |
| 658 | |
| 659 | std::string file, jniclass, jpackage; |
| 660 | for (UTL_ScopedName* sn = name; sn; |
| 661 | sn = static_cast<UTL_ScopedName*>(sn->tail())) { |
| 662 | std::string tmp = sn->head()->get_string(); |
| 663 | if (!tmp.empty() && sn->tail()) { |
| 664 | jpackage += tmp; |
| 665 | file += tmp; |
| 666 | if (ACE_OS::mkdir(file.c_str()) != 0 && errno != EEXIST) { |
| 667 | ACE_ERROR((LM_ERROR, ACE_TEXT("ERROR: java_ts_generator::generate - ") |
| 668 | ACE_TEXT("unable to create specified directory: %C"), file.c_str())); |
| 669 | } |
| 670 | } |
| 671 | for (size_t i = tmp.find('_'); i < tmp.length(); |
| 672 | i = tmp.find('_', i + 1)) { |
| 673 | tmp.insert(++i, 1, '1'); |
| 674 | } |
| 675 | jniclass += tmp; |
| 676 | if (!jniclass.empty() && sn->tail()) { |
| 677 | jniclass += '_'; |
| 678 | jpackage += '.'; |
| 679 | file += '/'; |
| 680 | } |
| 681 | } |
| 682 | |
| 683 | if (jpackage.size() && jpackage[jpackage.size() - 1] == '.') { |
| 684 | jpackage.resize(jpackage.size() - 1); |
| 685 | } |
| 686 | |
| 687 | std::string clazz = name->last_component()->get_string(); |
| 688 | file += clazz + "TypeSupportImpl.java"; |
| 689 | |
| 690 | std::ofstream java(file.c_str()); |
| 691 | java << (jpackage.size() ? "package " : "") << jpackage |
| 692 | << (jpackage.size() ? ";\n" :"") << |
| 693 | "public class " << clazz << "TypeSupportImpl extends _" << clazz |
| 694 | << "TypeSupportTAOPeer {\n" |
| 695 | " public " << clazz << "TypeSupportImpl() {\n" |
| 696 | " super(_jni_init());\n" |
| 697 | " }\n" |
| 698 | " private static native long _jni_init();\n" |
| 699 | "}\n"; |
| 700 | be_global->impl_ << |
| 701 | "extern \"C\" JNIEXPORT jlong JNICALL\n" |
no test coverage detected