package org.jacorb.ir; /* * JacORB - a free Java ORB * * Copyright (C) 1997-2014 Gerald Brose / The JacORB Team. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ import org.omg.CORBA.AbstractInterfaceDef; import org.omg.CORBA.ExtInitializer; import org.omg.CORBA.ExtValueDef; import org.omg.CORBA.INTF_REPOS; import org.omg.CORBA.InterfaceDef; import org.omg.CORBA.LocalInterfaceDef; import org.omg.CORBA.NO_IMPLEMENT; import org.omg.CORBA.ValueDef; import org.omg.PortableServer.POA; import org.slf4j.Logger; /** * @author Gerald Brose */ public class ModuleDef extends Contained implements org.omg.CORBA.ModuleDefOperations, ContainerType { private Container delegate; private String path = null; private Logger logger; public ModuleDef( String path, String full_name, org.omg.CORBA.Container def_in, org.omg.CORBA.Repository ir, ClassLoader loader, POA poa, Logger logger ) throws INTF_REPOS { this.logger = logger; this.path = path; this.full_name = full_name; if (this.logger.isDebugEnabled()) { this.logger.debug("New ModuleDef " + full_name + " path: " + path); } def_kind = org.omg.CORBA.DefinitionKind.dk_Module; if (ir == null) { throw new INTF_REPOS ("No repository!"); } containing_repository = ir; defined_in = def_in; try { id( RepositoryID.toRepositoryID( full_name, false, loader )); if( full_name.indexOf( "." ) > 0 ) { name( full_name.substring( full_name.lastIndexOf( "." ) + 1 )); if( defined_in instanceof org.omg.CORBA.Contained) { absolute_name = ((org.omg.CORBA.Contained)defined_in).absolute_name() + "::" + name(); if (this.logger.isDebugEnabled()) { this.logger.debug("New ModuleDef 1a) name " + name() + " absolute: " + absolute_name); } } else { absolute_name = "::" + name(); if (this.logger.isDebugEnabled()) { this.logger.debug("New ModuleDef 1b) name " + name() + " absolute: " + absolute_name + " defined_in : " + defined_in.getClass().getName()); } } } else { defined_in = containing_repository; name( full_name ); absolute_name = "::" + name(); if (this.logger.isDebugEnabled()) { this.logger.debug("New ModuleDef 2) name " + name() + " absolute:" + absolute_name); } } delegate = new Container( this, path, full_name, loader, poa, this.logger ); } catch ( Exception e ) { this.logger.error("Caught Exception", e); throw new INTF_REPOS( ErrorMsg.IR_Not_Implemented, org.omg.CORBA.CompletionStatus.COMPLETED_NO); } } public String path() { return path; } public void loadContents() { if (this.logger.isDebugEnabled()) { this.logger.debug("Module " + name() + " loading..."); } delegate.loadContents(); if (this.logger.isDebugEnabled()) { this.logger.debug("Module " + name() + " loaded"); } } void define() { delegate.define(); } public org.omg.CORBA.Contained lookup(/*ScopedName*/ String name) { if (this.logger.isDebugEnabled()) { this.logger.debug("Module " + this.name + " lookup " + name); } return delegate.lookup(name); } public org.omg.CORBA.Contained[] contents( org.omg.CORBA.DefinitionKind limit_type, boolean exclude_inherited) { return delegate.contents(limit_type, exclude_inherited); } public org.omg.CORBA.Contained[] lookup_name(String search_name, int levels_to_search, org.omg.CORBA.DefinitionKind limit_type, boolean exclude_inherited) { return delegate.lookup_name( search_name, levels_to_search, limit_type, exclude_inherited ); } public org.omg.CORBA.ContainerPackage.Description[] describe_contents( org.omg.CORBA.DefinitionKind limit_type, boolean exclude_inherited, int max_returned_objs) { return delegate.describe_contents( limit_type, exclude_inherited, max_returned_objs ); } public org.omg.CORBA.ModuleDef create_module(String id, String name, String version) { return delegate.create_module( id, name, version); } public org.omg.CORBA.ConstantDef create_constant( String id, String name, String version, org.omg.CORBA.IDLType type, org.omg.CORBA.Any value) { return delegate.create_constant( id, name, version, type, value ); } public org.omg.CORBA.StructDef create_struct( String id, String name, String version, org.omg.CORBA.StructMember[] members) { return delegate.create_struct( id, name, version, members); } public org.omg.CORBA.UnionDef create_union( String id, String name, String version, org.omg.CORBA.IDLType discriminator_type, org.omg.CORBA.UnionMember[] members) { return delegate.create_union( id, name, version, discriminator_type, members); } public org.omg.CORBA.EnumDef create_enum( String id, String name, String version, String[] members) { return delegate.create_enum( id, name, version, members); } public org.omg.CORBA.AliasDef create_alias( String id, String name, String version, org.omg.CORBA.IDLType original_type) { return delegate.create_alias( id, name, version, original_type); } public org.omg.CORBA.ExceptionDef create_exception( String id, String name, String version, org.omg.CORBA.StructMember[] member ) { return delegate.create_exception(id, name, version, member); } /** * not supported */ public org.omg.CORBA.InterfaceDef create_interface( String id, String name, String version, org.omg.CORBA.InterfaceDef[] base_interfaces) { return delegate.create_interface( id, name, version, base_interfaces); } /** * not supported */ public org.omg.CORBA.ValueBoxDef create_value_box(String id, String name, String version, org.omg.CORBA.IDLType type) { return delegate.create_value_box(id, name, version, type); } /** * not supported */ public org.omg.CORBA.ValueDef create_value( String id, String name, String version, boolean is_custom, boolean is_abstract, org.omg.CORBA.ValueDef base_value, boolean is_truncatable, org.omg.CORBA.ValueDef[] abstract_base_values, org.omg.CORBA.InterfaceDef[] supported_interfaces, org.omg.CORBA.Initializer[] initializers) { return delegate.create_value( id, name, version, is_custom, is_abstract, base_value, is_truncatable, abstract_base_values, supported_interfaces, initializers); } /** * not supported */ public org.omg.CORBA.NativeDef create_native(java.lang.String id, java.lang.String name, java.lang.String version) { return delegate.create_native( id, name, version); } // from Contained public org.omg.CORBA.ContainedPackage.Description describe() { org.omg.CORBA.Any a = orb.create_any(); String defined_in_id = null; if( defined_in instanceof org.omg.CORBA.Contained ) defined_in_id = ((org.omg.CORBA.Contained)defined_in).id(); else defined_in_id = "IR"; org.omg.CORBA.ModuleDescription m = new org.omg.CORBA.ModuleDescription( name, id, defined_in_id, version); org.omg.CORBA.ModuleDescriptionHelper.insert( a, m ); return new org.omg.CORBA.ContainedPackage.Description( org.omg.CORBA.DefinitionKind.dk_Module, a); } public void destroy() { delegate.destroy(); } public AbstractInterfaceDef create_abstract_interface (String id, String name, String version, AbstractInterfaceDef[] baseInterfaces) { throw new NO_IMPLEMENT ("NYI"); } public ExtValueDef create_ext_value (String id, String name, String version, boolean isCustom, boolean isAbstract, ValueDef baseValue, boolean isTruncatable, ValueDef[] abstractBaseValues, InterfaceDef[] supportedInterfaces, ExtInitializer[] initializers) { throw new NO_IMPLEMENT ("NYI"); } public LocalInterfaceDef create_local_interface (String id, String name, String version, InterfaceDef[] baseInterfaces) { throw new NO_IMPLEMENT ("NYI"); } }