Search in sources :

Example 96 with NamingException

use of javax.naming.NamingException in project ACS by ACS-Community.

the class DefaultSubscriberImpl method subscribe.

/**
   * Method subscribe
   *
   *
   * @param topic
   * @param listener
   * @param selector
   *
   * @return long the subscription handle identifier
   *
   * @throws JMSException
   * @throws NamingException
   *
   */
public long subscribe(String topic, SubscriptionListener listener, String selector) throws JMSException, NamingException {
    cat.info("subscribe(" + topic + ", listener, " + selector + ")");
    if (closed) {
        throw (new JMSException("Subscriber closed."));
    }
    SubscriptionHandle handle = new SubscriptionHandle();
    handle.setSubscriptionTopic(topic);
    handle.setSubscriptionSelector(selector);
    handle.setSubscriptionListener(listener);
    StringBuffer local_selector = new StringBuffer();
    if (NotificationHelper.isNotification(topic)) {
        // this is a subscription to notifications, no further selection is required
        local_selector.append(selector);
    } else {
        // subscription to a generic topic, adding subscriber specific selection
        if (selector != null) {
            local_selector.append(selector);
            local_selector.append(" AND ");
        }
        local_selector.append("( (");
        local_selector.append(NotificationHelper.SUBSCRIPTION_ID_PROPERTY);
        local_selector.append(" IS NULL) OR (");
        local_selector.append(NotificationHelper.SUBSCRIPTION_ID_PROPERTY);
        local_selector.append(" = '");
        local_selector.append(subscriberId);
        local_selector.append("@");
        local_selector.append(handle.getSubscriptionToken());
        local_selector.append("') )");
    }
    TopicSession session = null;
    TopicSubscriber subscriber = null;
    Topic the_topic = createTopic(topic);
    try {
        session = connection.createTopicSession();
        subscriber = session.createSubscriber(the_topic, local_selector.toString(), false);
    } catch (JMSSecurityException jse) {
        cat.error("JMSSecurityException caught");
        throw (new NamingException(jse.getMessage()));
    } catch (JMSException je) {
        cat.error("JMSException caught");
        throw (new NamingException(je.getMessage()));
    } catch (ConnectionException ce) {
        cat.error("ConnectionException caught");
        throw (new JMSException(ce.getMessage()));
    } catch (Exception e) {
        cat.error("Generic exception caught", e);
    }
    subscriber.setMessageListener(listener);
    handle.setSubscriber(subscriber);
    handle.setSession(session);
    synchronized (subscribers) {
        subscribers.put(new Long(handle.getSubscriptionToken()), handle);
    }
    if (!NotificationHelper.isNotification(topic)) {
        publishNotification(NotificationHelper.CONSUMER_OPEN_NOTIFICATION, handle);
    }
    return handle.getSubscriptionToken();
}
Also used : TopicSubscriber(javax.jms.TopicSubscriber) TopicSession(javax.jms.TopicSession) JMSSecurityException(javax.jms.JMSSecurityException) JMSException(javax.jms.JMSException) NamingException(javax.naming.NamingException) Topic(javax.jms.Topic) NamingException(javax.naming.NamingException) JMSException(javax.jms.JMSException) MOMException(cern.cmw.mom.pubsub.MOMException) JMSSecurityException(javax.jms.JMSSecurityException)

Example 97 with NamingException

use of javax.naming.NamingException in project ACS by ACS-Community.

the class DefaultSubscriberImpl method publishNotification.

/**
   * Method publishNotification
   *
   * @param type
   * @param handle
   * @throws JMSException
   */
private void publishNotification(int type, SubscriptionHandle handle) throws JMSException {
    if (notificationsEnabled) {
        cat.info("publishNotification(" + type + ", " + handle.getSubscriptionTopic() + ", " + handle.getSubscriptionSelector() + ")");
        notificationMessage.setIntProperty(NotificationHelper.NOTIFICATION_TYPE_PROPERTY, type);
        notificationMessage.setStringProperty(NotificationHelper.SELECTOR_PROPERTY, handle.getSubscriptionSelector());
        notificationMessage.setStringProperty(NotificationHelper.TOPIC_PROPERTY, handle.getSubscriptionTopic());
        notificationMessage.setStringProperty(NotificationHelper.SUBSCRIPTION_ID_PROPERTY, subscriberId + "@" + handle.getSubscriptionToken());
        Topic t = null;
        try {
            t = createTopic(NotificationHelper.CarrierTopics[type]);
        } catch (NamingException ne) {
            ne.printStackTrace();
        }
        notificationPublisher.publish(t, notificationMessage);
    }
}
Also used : NamingException(javax.naming.NamingException) Topic(javax.jms.Topic)

Example 98 with NamingException

use of javax.naming.NamingException in project ACS by ACS-Community.

the class JNDIContext method lookup.

/**
	 * @see Context#lookup(Name)
	 * THIS IS OLD CDB implementation
	public Object lookup(Name name) throws NamingException {
		//System.out.println("CDBContext lookup on " + this.name + " for " + name.toString());
		String nameToLookup = this.name + "/" + name;
		String recordName = nameToLookup.substring(nameToLookup.lastIndexOf('/')+1);
		// get list from the server 
		String elements = dal.list_nodes(nameToLookup);
		try {
			if (elements.indexOf(recordName + ".xml") != -1) {
				String xml = dal.get_DAO(nameToLookup);
				return new JNDIXMLContext(nameToLookup, elements, xml);
			} else {
				if (elements.length() == 0 ) { // inside a XML?
					int slashIndex = nameToLookup.lastIndexOf('/');
					String newName;
					while( slashIndex != -1 ) {
						newName = nameToLookup.substring(0,slashIndex);
						recordName = newName.substring(newName.lastIndexOf('/')+1);
						elements = dal.list_nodes(newName);
						if (elements.indexOf(recordName + ".xml") != -1) {
							String xml = dal.get_DAO(newName);
							recordName = nameToLookup.substring(slashIndex+1);
							return new JNDIXMLContext(newName, elements, xml).lookup(recordName);
						}
						slashIndex = newName.lastIndexOf('/');
					}
					throw new NamingException("No name " + nameToLookup );
				}
				return new JNDIContext(nameToLookup, elements);
			}
		} catch (CDBRecordDoesNotExistEx e) {
			// if it does not exists then it is just a context
			return new JNDIContext(nameToLookup, elements);
		} catch (CDBXMLErrorEx e) {
			AcsJCDBXMLErrorEx acse = new AcsJCDBXMLErrorEx(e);
			throw new NamingException(acse.getFilename());
		}
	}*/
/**
     * This methos returns either a new JNDI_Context or a new JNDI_XMLContxt obj.
     */
public Object lookup(Name name) throws NamingException {
    final String lookupName = name.toString();
    final String fullLookupName = this.name + "/" + lookupName;
    String daoElements = dal.list_daos(fullLookupName);
    if (daoElements.length() == 0)
        daoElements = null;
    // is subnode
    StringTokenizer token = new StringTokenizer(elements);
    while (token.hasMoreTokens()) if (token.nextElement().equals(lookupName)) {
        // is DAO?
        if (daoElements != null) {
            try {
                return new JNDIXMLContext(fullLookupName, dal.list_nodes(fullLookupName), dal.get_DAO(fullLookupName), logger);
            } catch (CDBXMLErrorEx th) {
                AcsJCDBXMLErrorEx jex = AcsJCDBXMLErrorEx.fromCDBXMLErrorEx(th);
                NamingException ex2 = new NamingException(jex.getFilename() + ": " + jex.getErrorString());
                ex2.setRootCause(jex);
                throw ex2;
            } catch (Throwable th) {
                throw new NamingException("Failed to retrieve DAO: " + fullLookupName);
            }
        } else
            return new JNDIContext(fullLookupName, dal.list_nodes(fullLookupName), logger);
    }
    if (daoElements != null) {
        // lookup in DAO
        token = new StringTokenizer(daoElements);
        while (token.hasMoreTokens()) if (token.nextElement().equals(lookupName)) {
            try {
                return new JNDIXMLContext(fullLookupName, dal.list_nodes(fullLookupName), dal.get_DAO(fullLookupName), logger);
            } catch (CDBXMLErrorEx th) {
                AcsJCDBXMLErrorEx jex = AcsJCDBXMLErrorEx.fromCDBXMLErrorEx(th);
                NamingException ex2 = new NamingException(jex.getFilename() + ": " + jex.getErrorString());
                ex2.setRootCause(jex);
                throw ex2;
            } catch (Throwable th) {
                throw new NamingException("Failed to retrieve DAO: " + fullLookupName);
            }
        }
    }
    // not found
    throw new NamingException("No name " + fullLookupName);
}
Also used : StringTokenizer(java.util.StringTokenizer) CDBXMLErrorEx(alma.cdbErrType.CDBXMLErrorEx) AcsJCDBXMLErrorEx(alma.cdbErrType.wrappers.AcsJCDBXMLErrorEx) AcsJCDBXMLErrorEx(alma.cdbErrType.wrappers.AcsJCDBXMLErrorEx) NamingException(javax.naming.NamingException)

Example 99 with NamingException

use of javax.naming.NamingException in project ACS by ACS-Community.

the class ManagerImpl method bind.

/**
	 * Bind object to remote directory.
	 *
	 * Use INS syntax specified in the INS specification.
	 * In short, the syntax is that components are left-to-right slash ('/') separated and case-sensitive.
	 * The id and kind of each component are separated by the period character ('.').
	 *
	 * @param	remoteDirectory	remote directory context to be used.
	 * @param	name	name of the object, code non-<code>null</code>
	 * @param	object	object to be binded
	 */
private void bind(Context remoteDirectory, String name, String type, Object object) {
    assert (name != null);
    // do not bind interdomain names
    if (name.startsWith(CURL_URI_SCHEMA))
        return;
    if (remoteDirectory != null) {
        try {
            // hierarchical name check
            int pos = name.indexOf('/');
            if (pos != -1) {
                if (pos == 0 || pos == name.length())
                    throw new IllegalArgumentException("Invalid hierarchical name '" + name + "'.");
                String parent = name.substring(0, pos);
                String child = name.substring(pos + 1);
                // lookup for subcontext, if not found create one
                Context parentContext = null;
                try {
                    parentContext = (Context) remoteDirectory.lookup(parent);
                } catch (NameNotFoundException nnfe) {
                // noop
                }
                if (parentContext == null) {
                    parentContext = remoteDirectory.createSubcontext(parent);
                /// @todo temp. commented out
                //generateHiearchyContexts(remoteDirectory, parent, parentContext);
                }
                // delegate
                bind(parentContext, child, type, object);
                return;
            }
            NameParser parser = remoteDirectory.getNameParser("");
            Name n;
            if (type != null)
                n = parser.parse(name + "." + type);
            else
                n = parser.parse(name);
            // special case
            if (name.endsWith(".D")) {
                remoteDirectory.rebind(n, object);
            /// @todo temp. commented out
            //generateHiearchyContexts(remoteDirectory, name, (Context)remoteDirectory.lookup(name));
            } else
                remoteDirectory.bind(n, object);
        } catch (NameAlreadyBoundException nabe) {
            rebind(remoteDirectory, name, type, object);
        } catch (NamingException ne) {
            CoreException ce = new CoreException("Failed to bind name '" + name + "' to the remote directory.", ne);
            logger.log(Level.FINE, ce.getMessage(), ce);
        }
    }
}
Also used : InitialContext(javax.naming.InitialContext) Context(javax.naming.Context) NameAlreadyBoundException(javax.naming.NameAlreadyBoundException) CoreException(com.cosylab.acs.maci.CoreException) NameNotFoundException(javax.naming.NameNotFoundException) NamingException(javax.naming.NamingException) NameParser(javax.naming.NameParser) Name(javax.naming.Name)

Example 100 with NamingException

use of javax.naming.NamingException in project ACS by ACS-Community.

the class ManagerImpl method lookup.

/**
	 * Lookups for an object in remote directory.
	 *
	 * Use INS syntax specified in the INS specification.
	 * In short, the syntax is that components are left-to-right slash ('/') separated and case-sensitive.
	 * The id and kind of each component are separated by the period character ('.').
	 *
	 * @param	remoteDirectory	remote directory context to be used.
	 * @param	name	name of the object, code non-<code>null</code>
	 * @param	type	type of the object
	 * @return	object	object found in the remote directory, <code>null<code> if nout found
	 */
private Object lookup(Context remoteDirectory, String name, String type) {
    assert (name != null);
    // do not look for interdomain names
    if (name.startsWith(CURL_URI_SCHEMA))
        return null;
    Object resolved = null;
    if (remoteDirectory != null) {
        try {
            NameParser parser = remoteDirectory.getNameParser("");
            Name n;
            if (type != null)
                n = parser.parse(name + "." + type);
            else
                n = parser.parse(name);
            resolved = remoteDirectory.lookup(n);
        } catch (NamingException ne) {
            CoreException ce = new CoreException("Failed to lookup name '" + name + "' in the remote directory.", ne);
            logger.log(Level.FINE, ce.getMessage(), ce);
        }
    }
    return resolved;
}
Also used : CoreException(com.cosylab.acs.maci.CoreException) NamingException(javax.naming.NamingException) NameParser(javax.naming.NameParser) Name(javax.naming.Name)

Aggregations

NamingException (javax.naming.NamingException)505 InitialContext (javax.naming.InitialContext)172 Context (javax.naming.Context)146 IOException (java.io.IOException)65 NameNotFoundException (javax.naming.NameNotFoundException)57 Test (org.junit.Test)51 DataSource (javax.sql.DataSource)47 SQLException (java.sql.SQLException)45 Properties (java.util.Properties)42 Reference (javax.naming.Reference)37 Name (javax.naming.Name)36 Attribute (javax.naming.directory.Attribute)35 ArrayList (java.util.ArrayList)32 Connection (java.sql.Connection)31 DirContext (javax.naming.directory.DirContext)31 NameAlreadyBoundException (javax.naming.NameAlreadyBoundException)29 Hashtable (java.util.Hashtable)27 SearchResult (javax.naming.directory.SearchResult)27 InitialDirContext (javax.naming.directory.InitialDirContext)25 OpenEJBException (org.apache.openejb.OpenEJBException)25