- /*
- * @(#)CorbanameURL.java 1.7 03/12/19
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.impl.naming.namingutil;
-
- import com.sun.corba.se.impl.logging.NamingSystemException;
- import com.sun.corba.se.spi.logging.CORBALogDomains;
-
- /**
- * The corbaname: URL definitions from the -ORBInitDef and -ORBDefaultInitDef's
- * will be stored in this object. This object is capable of storing CorbaLoc
- * profiles as defined in the CorbaName grammer.
- *
- * @Author Hemanth
- */
- public class CorbanameURL extends INSURLBase
- {
- private static NamingSystemException wrapper =
- NamingSystemException.get( CORBALogDomains.NAMING ) ;
-
- /**
- * This constructor takes a corbaname: url with 'corbaname:' prefix stripped
- * and initializes all the variables accordingly. If there are any parsing
- * errors then BAD_PARAM exception is raised.
- */
- public CorbanameURL( String aURL ) {
- String url = aURL;
-
- // First Clean the URL Escapes if there are any
- try {
- url = Utility.cleanEscapes( url );
- } catch( Exception e ) {
- badAddress( e );
- }
-
- int delimiterIndex = url.indexOf( '#' );
- String corbalocString = null;
- if( delimiterIndex != -1 ) {
- // Append corbaloc: for Grammar check, Get the string between
- // corbaname: and # which forms the corbaloc string
- corbalocString = "corbaloc:" +
- url.substring( 0, delimiterIndex ) + "/";
- } else {
- // Build a corbaloc string to check the grammar.
- // 10 is the length of corbaname:
- corbalocString = "corbaloc:" + url.substring( 0, url.length() );
- // If the string doesnot end with a / then add one to end the
- // URL correctly
- if( corbalocString.endsWith( "/" ) != true ) {
- corbalocString = corbalocString + "/";
- }
- }
- try {
- // Check the corbaloc grammar and set the returned corbaloc
- // object to the CorbaName Object
- INSURL insURL =
- INSURLHandler.getINSURLHandler().parseURL( corbalocString );
- copyINSURL( insURL );
- // String after '#' is the Stringified name used to resolve
- // the Object reference from the rootnaming context. If
- // the String is null then the Root Naming context is passed
- // back
- if((delimiterIndex > -1) &&
- (delimiterIndex < (aURL.length() - 1)))
- {
- int start = delimiterIndex + 1 ;
- String result = url.substring(start) ;
- theStringifiedName = result ;
- }
- } catch( Exception e ) {
- badAddress( e );
- }
- }
-
- /**
- * A Utility method to throw BAD_PARAM exception.
- */
- private void badAddress( java.lang.Throwable e )
- throws org.omg.CORBA.BAD_PARAM
- {
- throw wrapper.insBadAddress( e ) ;
- }
-
- /**
- * A Utility method to copy all the variables from CorbalocURL object to
- * this instance.
- */
- private void copyINSURL( INSURL url ) {
- rirFlag = url.getRIRFlag( );
- theEndpointInfo = (java.util.ArrayList) url.getEndpointInfo( );
- theKeyString = url.getKeyString( );
- theStringifiedName = url.getStringifiedName( );
- }
-
- public boolean isCorbanameURL( ) {
- return true;
- }
-
- }