container/profiles/src/main/java/org/mobicents/slee/container/management/ProfileManagementImpl.java
public ProfileTableImpl getProfileTable(String profileTableName) throws NullPointerException, UnrecognizedProfileTableNameException {

		if (profileTableName == null) throw new NullPointerException("profile table name is null");
		
		ProfileTableImpl profileTable = null;
		if (sleeContainer.getCluster().getMobicentsCache().isLocalMode()) {
			// no replication, table may only exist in local resources
			profileTable = profileTablesLocalObjects.get(profileTableName);
			if (profileTable == null) {
				throw new UnrecognizedProfileTableNameException(profileTableName);
			}
		}
		else {
			if (!profileTableFramework.getConfiguration().isClusteredProfiles()) {
				// profiles are not clustered, table may only exist in local resources
				profileTable = profileTablesLocalObjects.get(profileTableName);
				if (profileTable == null) {
					throw new UnrecognizedProfileTableNameException();
				}
			}
			else {
				// profiles are clustered, table may exist "remotely" and not in local resources, due to runtime creation in another cluster node, we need to go to database first
				final ProfileSpecificationID profileSpecificationID = profileTableFramework.getProfileSpecificationID(profileTableName);
				if (profileSpecificationID != null) {
					// exists in database
					profileTable = profileTablesLocalObjects.get(profileTableName);
					if (profileTable == null) {
						// local resource does not exists, create it
						ProfileSpecificationComponent component = sleeContainer.getComponentRepository().getComponentByID(profileSpecificationID);
						if (component != null) {
							profileTable = addProfileTableLocally(createProfileTableInstance(profileTableName, component),false, false);
						}
					}
				}
				else {
					// does not exists in database, ensure it is not in local objects
					profileTablesLocalObjects.remove(profileTableName);
				}
			}
		}
		
		if (profileTable == null)
			throw new UnrecognizedProfileTableNameException();
		else
			return profileTable;

	}
public ProfileTableImpl getProfileTable(String profileTableName) throws NullPointerException, UnrecognizedProfileTableNameException {

		if (profileTableName == null) throw new NullPointerException("profile table name is null");
		
		ProfileTableImpl profileTable = null;
		if (sleeContainer.getCluster().getMobicentsCache().isLocalMode()) {
			// no replication, table may only exist in local resources
			profileTable = profileTablesLocalObjects.get(profileTableName);
			if (profileTable == null) {
				throw new UnrecognizedProfileTableNameException(profileTableName);
			}
		}
		else {
			if (!profileTableFramework.getConfiguration().isClusteredProfiles()) {
				// profiles are not clustered, table may only exist in local resources
				profileTable = profileTablesLocalObjects.get(profileTableName);
				if (profileTable == null) {
					throw new UnrecognizedProfileTableNameException();
				}
			}
			else {
				// profiles are clustered, table may exist "remotely" and not in local resources, due to runtime creation in another cluster node, we need to go to database first
				final ProfileSpecificationID profileSpecificationID = profileTableFramework.getProfileSpecificationID(profileTableName);
				if (profileSpecificationID != null) {
					// exists in database
					profileTable = profileTablesLocalObjects.get(profileTableName);
					if (profileTable == null) {
						// local resource does not exists, create it
						ProfileSpecificationComponent component = sleeContainer.getComponentRepository().getComponentByID(profileSpecificationID);
						if (component != null) {
							profileTable = addProfileTableLocally(createProfileTableInstance(profileTableName, component),false, false);
						}
					}
				}
				else {
					// does not exists in database, ensure it is not in local objects
					profileTablesLocalObjects.remove(profileTableName);
				}
			}
		}
		
		if (profileTable == null)
			throw new UnrecognizedProfileTableNameException();
		else
			return profileTable;

	}
public ProfileTableImpl getProfileTable ( String profileTableName ) throws NullPointerException , UnrecognizedProfileTableNameException { if ( profileTableName == null ) throw new NullPointerException ( "profile table name is null" ) ; ProfileTableImpl profileTable = null ; if ( sleeContainer . getCluster ( ) . getMobicentsCache ( ) . isLocalMode ( ) ) { // no replication, table may only exist in local resources profileTable = profileTablesLocalObjects . get ( profileTableName ) ; if ( profileTable == null ) { throw new UnrecognizedProfileTableNameException ( profileTableName ) ; } } else { if ( ! profileTableFramework . getConfiguration ( ) . isClusteredProfiles ( ) ) { // profiles are not clustered, table may only exist in local resources profileTable = profileTablesLocalObjects . get ( profileTableName ) ; if ( profileTable == null ) { throw new UnrecognizedProfileTableNameException ( ) ; } } else { // profiles are clustered, table may exist "remotely" and not in local resources, due to runtime creation in another cluster node, we need to go to database first final ProfileSpecificationID profileSpecificationID = profileTableFramework . getProfileSpecificationID ( profileTableName ) ; if ( profileSpecificationID != null ) { // exists in database profileTable = profileTablesLocalObjects . get ( profileTableName ) ; if ( profileTable == null ) { // local resource does not exists, create it ProfileSpecificationComponent component = sleeContainer . getComponentRepository ( ) . getComponentByID ( profileSpecificationID ) ; if ( component != null ) { profileTable = addProfileTableLocally ( createProfileTableInstance ( profileTableName , component ) , false , false ) ; } } } else { // does not exists in database, ensure it is not in local objects profileTablesLocalObjects . remove ( profileTableName ) ; } } } if ( profileTable == null ) throw new UnrecognizedProfileTableNameException ( ) ; else return profileTable ; }
/*
(non-Javadoc)
@see org.mobicents.slee.container.management.ProfileManagement#getProfileTable(java.lang.String)
/ * ( non - Javadoc )