code: private IUserLayoutChannelDescription getTransientNode(String nodeId) throws PortalException {
          // get fname from subscribe id
          final String fname = getFname(nodeId);
          if (null == fname || fname.equals("")) {
              return null;
          }
  
          try {
              // check cache first
              IPortletDefinition chanDef = mChanMap.get(nodeId);
  
              if (null == chanDef) {
                  chanDef =
                          PortletDefinitionRegistryLocator.getPortletDefinitionRegistry()
                                  .getPortletDefinitionByFname(fname);
                  mChanMap.put(nodeId, chanDef);
              }
  
              return createUserLayoutChannelDescription(nodeId, chanDef);
  
          } catch (Exception e) {
              throw new PortalException("Failed to obtain channel definition using fname: " + fname);
          }
      }
docs: Return an IUserLayoutChannelDescription by way of nodeId
  
  @param nodeId the node (subscribe) id to get the channel for.
  @return a <code>IUserLayoutNodeDescription</code>