You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pubscribe-dev@ws.apache.org by ip...@apache.org on 2005/01/24 23:50:24 UTC
svn commit: r126323 - in incubator/hermes/trunk/src: java/org/apache/ws/notification/base java/org/apache/ws/notification/base/impl java/org/apache/ws/notification/base/v1_2/impl java/org/apache/ws/notification/base/v1_2/porttype/impl java/org/apache/ws/notification/tool/v1_2 java/org/apache/ws/notification/topics java/org/apache/ws/notification/topics/impl webapp wsdl
Author: ips
Date: Mon Jan 24 14:50:22 2005
New Revision: 126323
URL: http://svn.apache.org/viewcvs?view=rev&rev=126323
Log:
still in progress..
Added:
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/NotificationProducerResource.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/ResourcePropertyValueChangeListenerImpl.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpression.java
- copied, changed from r126297, incubator/hermes/trunk/src/java/org/apache/ws/notification/base/TopicExpression.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpaceRegistry.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicSpaceImpl.java
incubator/hermes/trunk/src/webapp/fingerprint.jsp
incubator/hermes/trunk/src/webapp/happyaxis.jsp
incubator/hermes/trunk/src/webapp/index.html
incubator/hermes/trunk/src/wsdl/SubscriptionManager.wsdl
Removed:
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/TopicExpression.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ResourcePropertyTopic.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicListMetaData.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicSetImpl.java
Modified:
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/Subscription.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/SubscriptionHome.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansQueryExpression.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/impl/Subscription1_2Resource.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/tool/v1_2/NotificationProducerPortType2JavaInfo.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/Topic.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEngine.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEvaluator.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpace.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleSubscriptionTopicListener.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicExpressionEvaluator.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicImpl.java
Added: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/NotificationProducerResource.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/NotificationProducerResource.java?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/NotificationProducerResource.java Mon Jan 24 14:50:22 2005
@@ -0,0 +1,41 @@
+/*=============================================================================*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.notification.base;
+
+import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.notification.topics.TopicListener;
+import org.apache.ws.notification.topics.TopicSpace;
+import org.apache.ws.resource.Resource;
+
+/**
+ * TODO
+ *
+ * @author Ian Springer (ian DOT springer AT hp DOT com)
+ */
+public interface NotificationProducerResource extends Resource, TopicListener
+{
+
+ void addTopicSpace( TopicSpace topicSpace );
+
+ void removeTopicSpace();
+
+ TopicSpace getTopicSpace( String namespaceURI );
+
+ TopicSpace[] getTopicSpaces();
+
+ Object getCurrentMessage( TopicExpression topicExpr );
+
+}
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/Subscription.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/Subscription.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/Subscription.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/Subscription.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/Subscription.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/Subscription.java Mon Jan 24 14:50:22 2005
@@ -18,6 +18,7 @@
import org.apache.ws.resource.Resource;
import org.apache.ws.resource.properties.query.QueryExpression;
import org.apache.ws.resource.lifetime.ScheduledResourceTerminationResource;
+import org.apache.ws.notification.topics.TopicExpression;
/**
* Interface to be implemented by subscription resources. Exposes the information
Deleted: /incubator/hermes/trunk/src/java/org/apache/ws/notification/base/TopicExpression.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/TopicExpression.java?view=auto&rev=126322
==============================================================================
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java Mon Jan 24 14:50:22 2005
@@ -19,11 +19,12 @@
import org.apache.commons.logging.LogFactory;
import org.apache.ws.notification.base.QueryExpressionFilter;
import org.apache.ws.notification.base.Subscription;
-import org.apache.ws.notification.base.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.TopicSpace;
import org.apache.ws.notification.topics.TopicListAccessor;
import org.apache.ws.notification.topics.TopicListener;
import org.apache.ws.notification.topics.TopicListenerList;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.impl.SimpleSubscriptionTopicListener;
import org.apache.ws.pubsub.Filter;
import org.apache.ws.pubsub.NotificationConsumer;
@@ -33,17 +34,23 @@
import org.apache.ws.resource.ResourceException;
import org.apache.ws.resource.ResourceHome;
import org.apache.ws.resource.ResourceKey;
+import org.apache.ws.resource.ResourceContextException;
import org.apache.ws.resource.properties.ResourcePropertySet;
import org.apache.ws.resource.properties.query.QueryExpression;
import org.apache.ws.util.uuid.UuidGenerator;
import org.apache.ws.util.uuid.UuidGeneratorFactory;
+import org.apache.ws.util.XmlBeanUtils;
import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.TopicExpressionType;
import org.oasisOpen.docs.wsrf.x2004.x06.wsrfWSResourceProperties12Draft01.QueryExpressionType;
import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceType;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.AttributedURI;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceDocument;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.ReferencePropertiesType;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.directory.SchemaViolationException;
+import javax.xml.rpc.JAXRPCException;
import java.net.URI;
import java.util.Calendar;
import java.util.Collection;
@@ -214,7 +221,6 @@
m_producerKey = producerKey;
m_producerHomeLocation = producerHomeLocation;
m_topicExpression = topicExpression;
- m_isPaused = isPaused;
m_useNotify = useNotify;
m_creationTime = Calendar.getInstance();
}
@@ -335,4 +341,6 @@
{
return null; //To change body of implemented methods use File | Settings | File Templates.
}
+
+
}
Added: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/ResourcePropertyValueChangeListenerImpl.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/ResourcePropertyValueChangeListenerImpl.java?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/ResourcePropertyValueChangeListenerImpl.java Mon Jan 24 14:50:22 2005
@@ -0,0 +1,38 @@
+/*=============================================================================*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.notification.base.impl;
+
+import org.apache.ws.resource.properties.ResourcePropertyValueChangeListener;
+import org.apache.ws.resource.properties.ResourcePropertyValueChangeEvent;
+import org.apache.ws.notification.topics.Topic;
+
+/**
+ * TODO
+ */
+public class ResourcePropertyValueChangeListenerImpl implements ResourcePropertyValueChangeListener
+{
+
+ public ResourcePropertyValueChangeListenerImpl( Topic topic )
+ {
+
+ }
+
+ public void propertyChanged( ResourcePropertyValueChangeEvent event )
+ {
+
+ }
+
+}
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/SubscriptionHome.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/SubscriptionHome.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/SubscriptionHome.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/SubscriptionHome.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/SubscriptionHome.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/SubscriptionHome.java Mon Jan 24 14:50:22 2005
@@ -16,19 +16,37 @@
package org.apache.ws.notification.base.impl;
import org.apache.ws.resource.impl.AbstractResourceHome;
+import org.apache.ws.resource.impl.SimpleTypeResourceKey;
import org.apache.ws.resource.Resource;
import org.apache.ws.resource.ResourceContext;
import org.apache.ws.resource.ResourceException;
import org.apache.ws.resource.ResourceContextException;
import org.apache.ws.resource.ResourceUnknownException;
+import org.apache.ws.resource.ResourceKey;
+import org.apache.ws.resource.JndiConstants;
+import org.apache.ws.resource.properties.query.QueryExpression;
import org.apache.ws.notification.base.Subscription;
+import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.util.XmlBeanUtils;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceType;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceDocument;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.AttributedURI;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.ReferencePropertiesType;
+
+import javax.xml.rpc.JAXRPCException;
+import javax.xml.namespace.QName;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Calendar;
+import java.lang.reflect.Constructor;
/**
* TODO
*/
public class SubscriptionHome extends AbstractResourceHome
{
-
+ private static final String SERVICE_NAME = "SubscriptionManager";
+ public static final String HOME_LOCATION = JndiConstants.CONTEXT_NAME_SERVICES + "/" + SERVICE_NAME + "/" + JndiConstants.ATOMIC_NAME_HOME;
/**
*
* @param resourceContext
@@ -43,11 +61,59 @@
return find( resourceContext.getResourceKey() );
}
- public Subscription createInstance( ResourceContext resourceContext ) throws ResourceException, ResourceContextException,
+ public EndpointReferenceType create( Class subscriptionResourceClass,
+ EndpointReferenceType consumerReference,
+ EndpointReferenceType producerReference,
+ Calendar initialTerminationTime,
+ Object policy,
+ QueryExpression precondition,
+ QueryExpression selector,
+ ResourceKey producerKey,
+ String producerHomeLocation,
+ TopicExpression topicExpression,
+ boolean useNotify ) throws ResourceException, ResourceContextException,
ResourceUnknownException
{
- // TODO
- return null;
+ Subscription subscription;
+ try
+ {
+ Constructor constructor = subscriptionResourceClass.getConstructor(
+ new Class[] {
+ EndpointReferenceType.class,
+ EndpointReferenceType.class,
+ Calendar.class,
+ Object.class,
+ QueryExpression.class,
+ QueryExpression.class,
+ ResourceKey.class,
+ String.class,
+ TopicExpression.class,
+ boolean.class } );
+ subscription = (Subscription) constructor.newInstance( new Object[] { consumerReference, producerReference, initialTerminationTime, policy, precondition, selector, producerKey, producerHomeLocation, topicExpression, new Boolean( useNotify ) } );
+ String id = (String) subscription.getID();
+
+ SimpleTypeResourceKey resourceKey = new SimpleTypeResourceKey( QName.valueOf( getResourceKeyName()), id);
+ add( resourceKey, subscription );
+ EndpointReferenceType epr = getEPR(resourceKey, producerReference);
+ }
+ catch ( Exception e )
+ {
+ throw new JAXRPCException( e );
+ }
+ return epr;
}
+ public EndpointReferenceType getEPR( ResourceKey resourceKey, EndpointReferenceType producerReference )
+ {
+ String producerAddress = producerReference.getAddress().toString();
+ String subscriptionAddress = producerAddress.substring( 0, producerAddress.lastIndexOf( "/") + 1) + SERVICE_NAME;
+ EndpointReferenceDocument eprDoc = EndpointReferenceDocument.Factory.newInstance();
+ EndpointReferenceType epr = eprDoc.addNewEndpointReference();
+ AttributedURI address = epr.addNewAddress();
+ address.setStringValue( subscriptionAddress );
+ // TODO: set portType and serviceName! (read from config file)
+ ReferencePropertiesType refProps = epr.addNewReferenceProperties();
+ XmlBeanUtils.addChildElement( refProps, resourceKey.getName() );
+ return epr;
+ }
}
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansQueryExpression.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansQueryExpression.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansQueryExpression.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansQueryExpression.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansQueryExpression.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansQueryExpression.java Mon Jan 24 14:50:22 2005
@@ -3,7 +3,7 @@
import org.apache.ws.resource.properties.query.QueryExpression;
import org.apache.ws.resource.i18n.MessagesImpl;
import org.apache.ws.resource.i18n.Keys;
-import org.apache.ws.XmlObjectFacade;
+import org.apache.ws.XmlObjectWrapper;
import org.apache.ws.util.i18n.Messages;
import org.apache.ws.util.XmlBeanUtils;
import org.apache.xmlbeans.XmlObject;
@@ -27,7 +27,7 @@
*
* @author Sal Campana
*/
-public class XmlBeansQueryExpression implements QueryExpression, XmlObjectFacade
+public class XmlBeansQueryExpression implements QueryExpression, XmlObjectWrapper
{
private static final Log LOG = LogFactory.getLog( XmlBeansQueryExpression.class );
public static final Messages MSG = MessagesImpl.getInstance();
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java Mon Jan 24 14:50:22 2005
@@ -18,7 +18,8 @@
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ws.notification.base.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.resource.i18n.Keys;
import org.apache.ws.resource.i18n.MessagesImpl;
import org.apache.ws.resource.properties.query.impl.XmlBeansQueryExpression;
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/impl/Subscription1_2Resource.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/impl/Subscription1_2Resource.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/impl/Subscription1_2Resource.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/impl/Subscription1_2Resource.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/impl/Subscription1_2Resource.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/impl/Subscription1_2Resource.java Mon Jan 24 14:50:22 2005
@@ -15,10 +15,11 @@
*=============================================================================*/
package org.apache.ws.notification.base.v1_2.impl;
-import org.apache.ws.notification.base.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.base.impl.AbstractSubscription;
import org.apache.ws.notification.base.impl.XmlBeansTopicExpression;
import org.apache.ws.notification.base.v1_2.porttype.SubscriptionManagerPortType;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.resource.ResourceKey;
import org.apache.ws.resource.lifetime.callback.CurrentTimeCallback;
import org.apache.ws.resource.lifetime.v1_2.porttype.ScheduledResourceTerminationPortType;
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java Mon Jan 24 14:50:22 2005
@@ -15,12 +15,16 @@
*=============================================================================*/
package org.apache.ws.notification.base.v1_2.porttype.impl;
-import org.apache.ws.notification.base.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.notification.base.Subscription;
import org.apache.ws.notification.base.impl.XmlBeansTopicExpression;
+import org.apache.ws.notification.base.impl.SubscriptionHome;
import org.apache.ws.notification.base.v1_2.impl.Subscription1_2Resource;
import org.apache.ws.notification.base.v1_2.porttype.NotificationProducerPortType;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.resource.ResourceContext;
import org.apache.ws.resource.ResourceContextException;
+import org.apache.ws.resource.Resource;
import org.apache.ws.resource.properties.query.QueryExpression;
import org.apache.ws.resource.properties.query.impl.XmlBeansQueryExpression;
import org.apache.ws.resource.properties.v1_2.porttype.impl.AbstractResourcePropertiesPortType;
@@ -30,12 +34,16 @@
import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.GetCurrentMessageResponseDocument;
import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.SubscribeDocument;
import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.SubscribeResponseDocument;
+import org.oasisOpen.docs.wsn.x2004.x06.wsnWSBaseNotification12Draft01.TopicExpressionType;
import org.xmlsoap.schemas.ws.x2003.x03.addressing.AttributedURI;
import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceDocument;
import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceType;
import org.xmlsoap.schemas.ws.x2003.x03.addressing.ReferencePropertiesType;
import javax.xml.rpc.JAXRPCException;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Calendar;
/**
* An implementation of the WS-BaseNotification NotificationProducer portType.
@@ -56,15 +64,21 @@
SubscribeDocument.Subscribe request = requestDoc.getSubscribe();
// TODO: use an EPR facade instead of the XMLBean EPR type
EndpointReferenceType consumerEPR = request.getConsumerReference();
- request.getInitialTerminationTime();
+ Calendar initialTerminationTime = request.getInitialTerminationTime();
QueryExpression precondition = new XmlBeansQueryExpression( request.getPrecondition() );
QueryExpression selector = new XmlBeansQueryExpression( request.getSelector() );
XmlObject subPolicy = request.getSubscriptionPolicy();
TopicExpression topicExpr = new XmlBeansTopicExpression( request.getTopicExpression() );
boolean useNotify = request.getUseNotify();
EndpointReferenceType producerEPR = buildEPR( getResourceContext() );
- new Subscription1_2Resource( request );
- return null;
+
+ Context initialContext = new InitialContext( );
+ SubscriptionHome subscriptionHome = (SubscriptionHome) initialContext.lookup( SubscriptionHome.HOME_LOCATION );
+ EndpointReferenceType epr = subscriptionHome.create(Subscription1_2Resource.class, consumerEPR, producerEPR, initialTerminationTime,subPolicy, precondition, selector,getResourceKey(), "",topicExpr,useNotify );
+ SubscribeResponseDocument subscribeResponseDocument = SubscribeResponseDocument.Factory.newInstance();
+ SubscribeResponseDocument.SubscribeResponse subscribeResponse = subscribeResponseDocument.addNewSubscribeResponse();
+ subscribeResponse.setSubscriptionReference( epr);
+ return subscribeResponseDocument;
}
private static EndpointReferenceType buildEPR( ResourceContext resourceContext )
@@ -88,6 +102,9 @@
public GetCurrentMessageResponseDocument getCurrentMessage( GetCurrentMessageDocument requestDoc )
{
+ GetCurrentMessageDocument.GetCurrentMessage request = requestDoc.getGetCurrentMessage();
+ TopicExpressionType topicExpr = request.getTopic();
+
// TODO
return null;
}
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/tool/v1_2/NotificationProducerPortType2JavaInfo.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/tool/v1_2/NotificationProducerPortType2JavaInfo.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/tool/v1_2/NotificationProducerPortType2JavaInfo.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/tool/v1_2/NotificationProducerPortType2JavaInfo.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/tool/v1_2/NotificationProducerPortType2JavaInfo.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/tool/v1_2/NotificationProducerPortType2JavaInfo.java Mon Jan 24 14:50:22 2005
@@ -16,6 +16,7 @@
package org.apache.ws.notification.tool.v1_2;
import org.apache.ws.notification.base.v1_2.porttype.NotificationProducerPortType;
+import org.apache.ws.notification.base.NotificationProducerResource;
import org.apache.ws.resource.tool.PortType2JavaInfo;
import javax.xml.namespace.QName;
@@ -35,7 +36,7 @@
public String getResourceInterfaceName()
{
- return null;
+ return NotificationProducerResource.class.getName();
}
public String getServiceInterfaceName()
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/Topic.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/Topic.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/Topic.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/Topic.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/Topic.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/Topic.java Mon Jan 24 14:50:22 2005
@@ -15,8 +15,6 @@
*=============================================================================*/
package org.apache.ws.notification.topics;
-import org.apache.ws.notification.topics.impl.TopicExpressionType;
-
import java.util.Iterator;
import java.util.List;
@@ -29,7 +27,7 @@
public interface Topic extends TopicListenerList
{
/**
- * Add a sub-topic.
+ * Add a subtopic.
*
* @param topic the sub-topic to add
*
@@ -38,35 +36,35 @@
void addTopic( Topic topic ) throws Exception;
/**
- * Remove a sub-topic.
+ * Remove a subtopic.
*
* @param topic the sub-topic to remove
*/
void removeTopic( Topic topic );
/**
- * Get the sub-topic with the given topic name
+ * Get the subtopic with the given topic name
*
* @param topicName the topic name of the sub topic
*
- * @return the sub-topic, or null if no sub-topic with the given name exists
+ * @return the subtopic, or null if no subtopic with the given name exists
*/
- Topic getSubTopic( String topicName );
+ Topic getTopic( String topicName );
/**
- * Set the topic expression that resolves to a set of topics that this topic references. Only used for reference
- * topics.
+ * Set the topic expression that resolves to a set of topics that this topic references.
+ * Only used for reference topics.
*
* @param topicPath The topic expression to set.
*/
- void setTopicReference( TopicExpressionType topicPath );
+ void setTopicReference( TopicExpression topicPath );
/**
* Get the topic expression for the topic(s) that this topic references.
*
* @return The topic expression that this topic reference or null if this topic is not a reference.
*/
- TopicExpressionType getTopicReference();
+ TopicExpression getTopicReference();
/**
* Set the topic path. The topic path is represented as a ordered list of topic names
@@ -97,25 +95,26 @@
Object getCurrentMessage();
/**
- * Send out a notification on this topic
+ * Publish a notification message to this topic.
*
- * @param obj Object representation of the message to send
+ * @param msg the notification message to be published
*
- * @throws Exception
+ * @throws Exception on error
*/
- void notify( Object obj ) throws Exception;
+ void publish( Object msg ) throws Exception;
/**
* Is this a topic reference?
*
- * @return true if this topic is a reference to another topic false if not
+ * @return true if this topic is a reference to another topic, false if not
*/
boolean isReference();
/**
* Iterator for the set of child topics
*
- * @return The iterator
+ * @return the iterator
*/
Iterator topicIterator();
+
}
Copied: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpression.java (from r126297, incubator/hermes/trunk/src/java/org/apache/ws/notification/base/TopicExpression.java)
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpression.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/TopicExpression.java&r1=126297&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpression.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/TopicExpression.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpression.java Mon Jan 24 14:50:22 2005
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*=============================================================================*/
-package org.apache.ws.notification.base;
+package org.apache.ws.notification.topics;
import java.net.URI;
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEngine.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEngine.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEngine.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEngine.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEngine.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEngine.java Mon Jan 24 14:50:22 2005
@@ -15,9 +15,6 @@
*/
package org.apache.ws.notification.topics;
-import org.apache.ws.notification.topics.impl.TopicExpressionType;
-import org.apache.ws.notification.topics.TopicSpace;
-import org.apache.ws.notification.topics.TopicExpressionEvaluator;
import org.apache.ws.notification.topics.topicexpression.impl.UnsupportedTopicExpressionDialectException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionResolutionException;
import org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException;
@@ -62,7 +59,7 @@
* @throws TopicExpressionException if any other error occurs
*/
public Collection resolveTopicExpression(
- TopicExpressionType topicExpression,
+ TopicExpression topicExpression,
TopicSpace topicSpace) throws UnsupportedTopicExpressionDialectException,
TopicExpressionResolutionException,
InvalidTopicExpressionException,
@@ -85,7 +82,7 @@
* if the topic expression is invalid
* @throws TopicExpressionException if any other error occurs
*/
- public List getConcretePath(TopicExpressionType topicExpression)
+ public List getConcretePath(TopicExpression topicExpression)
throws UnsupportedTopicExpressionDialectException,
TopicExpressionResolutionException,
InvalidTopicExpressionException,
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEvaluator.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEvaluator.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEvaluator.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEvaluator.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEvaluator.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicExpressionEvaluator.java Mon Jan 24 14:50:22 2005
@@ -15,52 +15,47 @@
*/
package org.apache.ws.notification.topics;
-import org.apache.ws.notification.topics.TopicSpace;
-import org.apache.ws.notification.topics.impl.TopicExpressionType;
import org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionResolutionException;
import org.apache.ws.notification.topics.topicexpression.impl.UnsupportedTopicExpressionDialectException;
-import org.apache.ws.notification.base.TopicExpression;
+import org.w3c.dom.Element;
import java.util.Collection;
import java.util.List;
-
/**
- * A <code>TopicExpressionEvaluator</code> is used to implement a topic
- * expression evaluation against a <code>TopicList</code>. An evaluator can be
- * registered with a <code>TopicExpressionEngine</code>, which in turn calls the
- * evaluator when a matching expression is found.
- *
+ * A <code>TopicExpressionEvaluator</code> is used to implement a topic expression evaluation against a
+ * <code>TopicList</code>. An evaluator can be registered with a <code>TopicExpressionEngine</code>, which in turn calls
+ * the evaluator when a matching expression is found.
*/
public interface TopicExpressionEvaluator
{
/**
- * Evaluates the expression over a TopicList and returns the result.
+ * Evaluates the expression over a TopicSpace and returns the set of matching topics.
+ *
+ * @param expression object passed by client representing the topic expression
+ * @param topicSpace topic list associated with the service/resource
+ * @param nsContext a DOM element to use as the context for resolving namespace prefixes
+ *
+ * @return the set of topics that matched the specified expression
*
- * @param expression object passed by client representing the topic
- * expression
- * @param topicSpace topic list associated with the service/resource
- * @return the result of the evaluation which depends on the expression.
* @throws UnsupportedTopicExpressionDialectException
- * if the topic expression dialect is not
- * supported
+ * if the topic expression dialect is not supported
* @throws TopicExpressionResolutionException
- * if the expression could not be
- * evaluated
+ * if the expression could not be evaluated
* @throws InvalidTopicExpressionException
* if the topic expression is invalid
* @throws TopicExpressionException if any other error occurs
*/
- public Collection resolve(
- TopicExpression expression,
- TopicSpace topicSpace)
- throws UnsupportedTopicExpressionDialectException,
- TopicExpressionResolutionException,
- InvalidTopicExpressionException,
- TopicExpressionException;
+ public Collection resolve( TopicExpression expression,
+ TopicSpace topicSpace,
+ Element nsContext )
+ throws UnsupportedTopicExpressionDialectException,
+ TopicExpressionResolutionException,
+ InvalidTopicExpressionException,
+ TopicExpressionException;
/**
* Gets the URIs for the dialects that this evaluator can handle
@@ -70,37 +65,36 @@
public String[] getDialects();
/**
- * Converts the expression from dialect specific form to a ordered list of
- * QNames. This method throws an exception if the expression does not
- * evaluate to a concrete topic path.
+ * Converts the expression from dialect specific form to a ordered list of QNames. This method throws an exception
+ * if the expression does not evaluate to a concrete topic path.
+ *
+ * @param expression object passed by client representing the topic expression
*
- * @param expression object passed by client representing the topic
- * expression
* @return a list of QNames describing the concrete topic path
+ *
* @throws UnsupportedTopicExpressionDialectException
- * if the topic expression dialect is not
- * supported
+ * if the topic expression dialect is not supported
* @throws InvalidTopicExpressionException
* if the topic expression is invalid
* @throws TopicExpressionException if any other error occurs
*/
- public List getConcreteTopicPath(TopicExpressionType expression)
- throws UnsupportedTopicExpressionDialectException,
- InvalidTopicExpressionException,
- TopicExpressionException;
+ public List getConcreteTopicPath( TopicExpression expression )
+ throws UnsupportedTopicExpressionDialectException,
+ InvalidTopicExpressionException,
+ TopicExpressionException;
/**
- * Converts a topic path (list of QNames) to a dialect specific concrete
- * topic expression.
+ * Converts a topic path (list of QNames) to a dialect specific concrete topic expression.
+ *
+ * @param topicPath containing a list of QNames describing a concrete topic path
*
- * @param topicPath containing a list of QNames describing a concrete topic
- * path
* @return dialect specific version of the topic path
+ *
* @throws InvalidTopicExpressionException
* if the conrete topic path is invalid
* @throws TopicExpressionException if any other error occurs
*/
- public TopicExpressionType toTopicExpression(List topicPath)
- throws org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException,
- TopicExpressionException;
+ public TopicExpression toTopicExpression( List topicPath )
+ throws org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException,
+ TopicExpressionException;
}
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpace.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpace.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpace.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpace.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpace.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpace.java Mon Jan 24 14:50:22 2005
@@ -15,8 +15,6 @@
*=============================================================================*/
package org.apache.ws.notification.topics;
-import org.apache.ws.notification.topics.impl.TopicExpressionType;
-
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -63,7 +61,7 @@
* if the topic expression is invalid
* @throws TopicExpressionException if any other error occurs
*/
- Collection getTopics( TopicExpressionType topicExpression )
+ Collection getTopics( TopicExpression topicExpression )
/* throws UnsupportedTopicExpressionDialectException, TopicExpressionResolutionException, InvalidTopicExpressionException, TopicExpressionException */;
/**
Added: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpaceRegistry.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpaceRegistry.java?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/TopicSpaceRegistry.java Mon Jan 24 14:50:22 2005
@@ -0,0 +1,56 @@
+/*=============================================================================*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.notification.topics;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+public class TopicSpaceRegistry
+{
+ private static TopicSpaceRegistry s_ourInstance = new TopicSpaceRegistry();
+
+ public static TopicSpaceRegistry getInstance()
+ {
+ return s_ourInstance;
+ }
+
+ private TopicSpaceRegistry()
+ {
+ }
+
+ private Map m_topicSpaceMap = new HashMap();
+
+ public TopicSpace getTopicSpace( String namespaceURI )
+ {
+ return (TopicSpace) m_topicSpaceMap.get( namespaceURI );
+ }
+
+ public void addTopicSpace( TopicSpace topicSpace )
+ {
+ m_topicSpaceMap.put( topicSpace.getNamespaceURI(), topicSpace );
+ }
+
+ public void removeTopicSpace( String namespaceURI )
+ {
+ m_topicSpaceMap.remove( namespaceURI );
+ }
+
+ public Iterator iterator()
+ {
+ return m_topicSpaceMap.values().iterator();
+ }
+}
Deleted: /incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ResourcePropertyTopic.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ResourcePropertyTopic.java?view=auto&rev=126322
==============================================================================
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleSubscriptionTopicListener.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleSubscriptionTopicListener.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleSubscriptionTopicListener.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleSubscriptionTopicListener.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleSubscriptionTopicListener.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleSubscriptionTopicListener.java Mon Jan 24 14:50:22 2005
@@ -39,6 +39,7 @@
import org.apache.wsrf.impl.security.authentication.Constants;
import org.apache.wsrf.impl.security.authorization.NoAuthorization;
import org.apache.wsrf.impl.security.descriptor.ClientSecurityDescriptor;
+import org.apache.ws.notification.topics.TopicListener;
import org.globus.util.I18n;
import org.oasis.wsn.NotificationConsumer;
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicExpressionEvaluator.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicExpressionEvaluator.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicExpressionEvaluator.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicExpressionEvaluator.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicExpressionEvaluator.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicExpressionEvaluator.java Mon Jan 24 14:50:22 2005
@@ -29,8 +29,9 @@
import org.apache.ws.notification.topics.TopicSpace;
import org.apache.ws.notification.topics.TopicExpressionEvaluator;
import org.apache.ws.notification.topics.Topic;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.v1_2.Topics1_2Constants;
-import org.apache.ws.notification.base.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpression;
/**
* Topic expression evalutor for the "Simple" topic dialect.
Deleted: /incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicListMetaData.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/SimpleTopicListMetaData.java?view=auto&rev=126322
==============================================================================
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java Mon Jan 24 14:50:22 2005
@@ -19,6 +19,12 @@
import org.apache.commons.logging.LogFactory;
import org.apache.ws.notification.topics.TopicExpressionEngine;
import org.apache.ws.notification.topics.TopicExpressionEvaluator;
+import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.notification.topics.TopicSpace;
+import org.apache.ws.notification.topics.topicexpression.impl.UnsupportedTopicExpressionDialectException;
+import org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException;
+import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionException;
+import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionResolutionException;
import org.apache.ws.util.jndi.JNDIUtils;
import javax.naming.Context;
@@ -40,15 +46,13 @@
*/
public class TopicExpressionEngineImpl implements TopicExpressionEngine
{
- private static String TOPIC_EXPRESSION_EVALUATOR_CONTEXT =
- Constants.JNDI_BASE_NAME + "/topic/eval";
+ //private static String TOPIC_EXPRESSION_EVALUATOR_CONTEXT =
+ // Constants.JNDI_BASE_NAME + "/topic/eval";
- private static I18n i18n = I18n.getI18n( Resources.class.getName() );
-
- static Log logger =
+ private static final Log LOG =
LogFactory.getLog( TopicExpressionEngineImpl.class.getName() );
- private Map evaluators = new HashMap();
+ private Map m_evaluators = new HashMap();
public TopicExpressionEngineImpl()
{
@@ -71,7 +75,7 @@
}
catch ( NamingException e )
{
- logger.error( i18n.getMessage( "topicEngineConfigError" ), e );
+ LOG.error( i18n.getMessage( "topicEngineConfigError" ), e );
}
return null;
}
@@ -82,7 +86,7 @@
*/
public synchronized void refresh()
{
- this.evaluators.clear();
+ this.m_evaluators.clear();
NamingEnumeration list = null;
try
{
@@ -101,7 +105,7 @@
}
catch ( NamingException e )
{
- logger.error( i18n.getMessage( "topicEngineInitError" ), e );
+ LOG.error( i18n.getMessage( "topicEngineInitError" ), e );
}
finally
{
@@ -120,24 +124,24 @@
public synchronized void registerEvaluator( TopicExpressionEvaluator evaluator )
{
- logger.debug( "Adding dialects for " + evaluator.getClass().getName() );
+ LOG.debug( "Adding dialects for " + evaluator.getClass().getName() );
String[] dialects = evaluator.getDialects();
for ( int i = 0; i < dialects.length; i++ )
{
- logger.debug( "Adding dialect: " + dialects[i] );
- this.evaluators.put( dialects[i], evaluator );
+ LOG.debug( "Adding dialect: " + dialects[i] );
+ this.m_evaluators.put( dialects[i], evaluator );
}
}
public synchronized TopicExpressionEvaluator getEvaluator( String dialect )
{
TopicExpressionEvaluator evaluator =
- (TopicExpressionEvaluator) this.evaluators.get( dialect );
+ (TopicExpressionEvaluator) this.m_evaluators.get( dialect );
return evaluator;
}
- public synchronized Collection resolveTopicExpression( TopicExpressionType topicExpression,
- TopicList topicList )
+ public synchronized Collection resolveTopicExpression( TopicExpression topicExpression,
+ TopicSpace topicList )
throws org.apache.ws.notification.topics.topicexpression.impl.UnsupportedTopicExpressionDialectException,
TopicExpressionResolutionException,
InvalidTopicExpressionException,
@@ -155,34 +159,34 @@
}
String dialect = topicExpression.getDialect().toString();
- TopicExpressionEvaluator evaluator = this.getEvaluator( dialect );
+ TopicExpressionEvaluator evaluator = getEvaluator( dialect );
if ( evaluator == null )
{
- if ( logger.isDebugEnabled() )
+ if ( LOG.isDebugEnabled() )
{
- logger.debug( "Dialect not supported:" + dialect );
- logger.debug( "Registered dialects are:" );
- Iterator keyIterator = this.evaluators.keySet().iterator();
+ LOG.debug( "Dialect not supported:" + dialect );
+ LOG.debug( "Registered dialects are:" );
+ Iterator keyIterator = m_evaluators.keySet().iterator();
Object key = null;
while ( keyIterator.hasNext() )
{
key = keyIterator.next();
- logger.debug( key );
+ LOG.debug( key );
}
- logger.debug( "key.equals(dialect): " + ( key.equals( dialect.toString() ) ) );
- logger.debug( "this.evaluators.containsKey(dialect): " +
- this.evaluators.containsKey( dialect.toString() ) );
- logger.debug( "HashCode of key: " + String.valueOf( key.hashCode() ) );
- logger.debug( "HashCode of dialect: " + String.valueOf( dialect.toString().hashCode() ) );
- logger.debug( "Object stored for key: " + this.evaluators.get( key ) );
+ LOG.debug( "key.equals(dialect): " + ( key.equals( dialect.toString() ) ) );
+ LOG.debug( "this.evaluators.containsKey(dialect): " +
+ this.m_evaluators.containsKey( dialect.toString() ) );
+ LOG.debug( "HashCode of key: " + String.valueOf( key.hashCode() ) );
+ LOG.debug( "HashCode of dialect: " + String.valueOf( dialect.toString().hashCode() ) );
+ LOG.debug( "Object stored for key: " + this.m_evaluators.get( key ) );
}
throw new UnsupportedTopicExpressionDialectException();
}
return evaluator.resolve( topicExpression, topicList );
}
- public synchronized List getConcretePath( TopicExpressionType topicExpression )
+ public synchronized List getConcretePath( TopicExpression topicExpression )
throws org.apache.ws.notification.topics.topicexpression.impl.UnsupportedTopicExpressionDialectException,
TopicExpressionResolutionException,
InvalidTopicExpressionException,
@@ -213,6 +217,6 @@
public synchronized String[] getSupportedDialects()
{
- return (String[]) this.evaluators.keySet().toArray( new String[this.evaluators.size()] );
+ return (String[]) this.m_evaluators.keySet().toArray( new String[this.m_evaluators.size()] );
}
}
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicImpl.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicImpl.java?view=diff&rev=126323&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicImpl.java&r1=126322&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicImpl.java&r2=126323
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicImpl.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicImpl.java Mon Jan 24 14:50:22 2005
@@ -18,8 +18,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ws.notification.topics.Topic;
+import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.TopicListener;
-import org.apache.ws.notification.base.TopicExpression;
import java.util.Collection;
import java.util.HashMap;
@@ -41,8 +41,7 @@
protected String m_name;
protected Object m_current;
protected List m_topicPath; // ordered set of QNames
- private static final Log LOG =
- LogFactory.getLog( TopicImpl.class.getName() );
+ private static final Log LOG = LogFactory.getLog( TopicImpl.class.getName() );
public void addTopic( Topic topic ) throws Exception
{
@@ -51,11 +50,11 @@
throw new Exception( "addingSubTopicToReference" );
}
- this.m_subTopics.put( topic.getName(), topic );
+ m_subTopics.put( topic.getName(), topic );
List topicPath = new LinkedList();
- topicPath.addAll( this.m_topicPath );
+ topicPath.addAll( m_topicPath );
topicPath.add( topic.getName() );
topic.setTopicPath( topicPath );
@@ -73,7 +72,7 @@
return m_name;
}
- public Topic getSubTopic( String topicName )
+ public Topic getTopic( String topicName )
{
return (Topic) m_subTopics.get( topicName );
}
@@ -83,9 +82,9 @@
*
* @return The topic expression that this topic reference or null if this topic is not a reference.
*/
- public TopicExpressionType getTopicReference()
+ public TopicExpression getTopicReference()
{
- return null;
+ return m_reference;
}
public boolean isReference()
@@ -98,7 +97,7 @@
return m_subTopics.values().iterator();
}
- public void notify( Object obj ) throws Exception
+ public void publish( Object obj ) throws Exception
{
m_current = obj;
if ( LOG.isDebugEnabled() )
@@ -131,7 +130,7 @@
return this.m_listeners.iterator();
}
- public void setTopicReference( TopicExpressionType topicPath )
+ public void setTopicReference( TopicExpression topicPath )
{
this.m_reference = topicPath;
}
@@ -166,7 +165,7 @@
* @param current The current value of this topic
* @param topicPath The concrete topic path of this topic
*/
- public TopicImpl( Map subTopics, TopicExpressionType reference,
+ public TopicImpl( Map subTopics, TopicExpression reference,
Collection listeners, String name,
Object current, List topicPath )
{
@@ -210,5 +209,10 @@
listener = (TopicListener) listenerIterator.next();
listener.topicRemoved( topic );
}
+ }
+
+ public Topic getParent()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
}
}
Deleted: /incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicSetImpl.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicSetImpl.java?view=auto&rev=126322
==============================================================================
Added: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicSpaceImpl.java
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicSpaceImpl.java?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicSpaceImpl.java Mon Jan 24 14:50:22 2005
@@ -0,0 +1,86 @@
+/*=============================================================================*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.notification.topics.impl;
+
+import org.apache.ws.notification.topics.TopicSpace;
+import org.apache.ws.notification.topics.Topic;
+import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.notification.topics.TopicListener;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * TODO
+ */
+public class TopicSpaceImpl implements TopicSpace
+{
+ private String m_namespaceURI;
+ private Map m_rootTopicMap;
+
+ public TopicSpaceImpl( String namespaceURI )
+ {
+ m_namespaceURI = namespaceURI;
+ }
+
+ public String getNamespaceURI()
+ {
+ return m_namespaceURI;
+ }
+
+ public void addTopic( Topic topic )
+ {
+ m_rootTopicMap.put( topic.getName(), topic );
+ }
+
+ public void removeTopic( Topic topic )
+ {
+ m_rootTopicMap.remove( topic.getName() );
+ }
+
+ public Collection getTopics( TopicExpression topicExpression )
+ /* throws UnsupportedTopicExpressionDialectException, TopicExpressionResolutionException, InvalidTopicExpressionException, TopicExpressionException */
+ {
+ return null; // TODO
+ }
+
+ public Topic getTopic( List topicPath )
+ {
+ return null; // TODO
+ }
+
+ public Iterator topicIterator()
+ {
+ return m_rootTopicMap.values().iterator();
+ }
+
+ public void addTopicListener( TopicListener listener )
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void removeTopicListener( TopicListener listener )
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Iterator topicListenerIterator()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+}
Added: incubator/hermes/trunk/src/webapp/fingerprint.jsp
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/webapp/fingerprint.jsp?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/webapp/fingerprint.jsp Mon Jan 24 14:50:22 2005
@@ -0,0 +1,272 @@
+<%@ page import="java.io.File,
+ java.io.IOException,
+ java.util.Date"
+ session="false" %>
+<html>
+<head>
+<title>System Fingerprint</title>
+</head>
+<body bgcolor=#ffffff>
+<%!
+
+ /*
+ * Fingerprint the users system. This is mainly for use in
+ * diagnosing classpath problems. It is intended to dump out
+ * a copy of the environment this webapp is running in,
+ * and additionally attempt to identify versions of each jar
+ * in the classpath.
+ *
+ * @author Brian Ewins
+ */
+
+ private java.util.Properties versionProps=new java.util.Properties();
+
+ /**
+ * Identify the version of a jar file. This uses a properties file
+ * containing known names and sizes in the format
+ * 'name(size)=version'. Version strings should be like 'xerces-1.4'
+ * ie they should include the name of the library.
+ */
+ public String getFileVersion(File file) throws IOException {
+ String key="<td>"+file.getName()+"</td>";
+ key+= "<td>"+file.length()+"</td>";
+ Date timestamp=new Date(file.lastModified());
+ key+= "<td>"+timestamp.toString()+"</td>";
+ return key;
+
+ /* TODO: implement
+ String value=versionProps.getProperty(key);
+ if (value==null) {
+ // make it possible to have jars without version nos
+ value=versionProps.getProperty(file.getName());
+ }
+ if (value==null) {
+ // fall back on something obvious
+ value=key;
+ Date timestamp=new Date(file.lastModified());
+ value+=" / "+timestamp.toString();
+ }
+ return value;
+ */
+ }
+
+ /**
+ * Split up a classpath-like variable. Returns a list of files.
+ * TODO: this can't cope with relative paths. I think theres code in BCEL that
+ * can be used for this?
+ */
+ File[] splitClasspath(String path) throws IOException {
+ java.util.StringTokenizer st=
+ new java.util.StringTokenizer(path,
+ System.getProperty("path.separator"));
+ int toks=st.countTokens();
+ File[] files=new File[toks];
+ for(int i=0;i<toks;i++) {
+ files[i]=new File(st.nextToken());
+ }
+ return files;
+ }
+
+ /** given a list of files, return a list of jars which actually exist */
+ File[] scanFiles(File[] files) throws IOException {
+ File[] jars=new File[files.length];
+ int found=0;
+ for (int i=0; i<files.length; i++) {
+ if (files[i].getName().toLowerCase().endsWith(".jar")
+ && files[i].exists()) {
+ jars[found]=files[i];
+ found++;
+ }
+ }
+ if (found<files.length) {
+ File[] temp=new File[found];
+ System.arraycopy(jars,0,temp,0,found);
+ jars=temp;
+ }
+ return jars;
+ }
+
+ private static final File[] NO_FILES=new File[0];
+
+ /** scan a directory for jars */
+ public File[] scanDir(String dir) throws IOException
+ {
+ if(dir==null) {
+ return NO_FILES;
+ }
+ return scanDir(new File(dir));
+ }
+
+ public File[] scanDir(File dir) throws IOException {
+ if (!dir.exists() || !dir.isDirectory()) {
+ return NO_FILES;
+ }
+ return scanFiles(dir.listFiles());
+ }
+
+ /** scan a classpath for jars */
+ public File[] scanClasspath(String path) throws IOException {
+ if (path==null) {
+ return NO_FILES;
+ }
+ return scanFiles(splitClasspath(path));
+ }
+
+ /**
+ * scan a 'dirpath' (like the java.ext.dirs system property) for jars
+ */
+ public File[] scanDirpath(String path) throws IOException {
+ if (path==null) {
+ return NO_FILES;
+ }
+ File[] current=new File[0];
+ File[] dirs=splitClasspath(path);
+ for(int i=0; i<dirs.length; i++) {
+ File[] jars=scanDir(dirs[i]);
+ File[] temp=new File[current.length+jars.length];
+ System.arraycopy(current,0,temp,0,current.length);
+ System.arraycopy(jars,0,temp,current.length,jars.length);
+ current=temp;
+ }
+ return scanFiles(current);
+ }
+
+ /** print out the jar versions for a directory */
+ public void listDirectory(String title, JspWriter out,String dir, String comment) throws IOException {
+ listVersions(title, out,scanDir(dir), comment);
+ }
+
+ /** print out the jar versions for a directory-like system property */
+ public void listDirProperty(String title, JspWriter out,String key, String comment) throws IOException {
+ listVersions(title, out,scanDir(System.getProperty(key)), comment);
+ }
+
+ /** print out the jar versions for a classpath-like system property */
+ public void listClasspathProperty(String title, JspWriter out,String key, String comment) throws IOException {
+ listVersions(title, out,scanClasspath(System.getProperty(key)), comment);
+ }
+
+ /** print out the jar versions for a 'java.ext.dirs'-like system property */
+ public void listDirpathProperty(String title, JspWriter out,String key, String comment) throws IOException {
+ listVersions(title, out,scanDirpath(System.getProperty(key)), comment);
+ }
+
+ /** print out the jar versions for a context-relative directory */
+ public void listContextPath(String title, JspWriter out, String path, String comment) throws IOException {
+ listVersions(title, out,scanDir(getServletConfig().getServletContext().getRealPath(path)), comment);
+ }
+
+ /** print out the jar versions for a given list of files */
+ public void listVersions(String title, JspWriter out,File[] jars, String comment) throws IOException {
+ out.print("<h2>");
+ out.print(title);
+ out.println("</h2>");
+ out.println("<table>");
+ for (int i=0; i<jars.length; i++) {
+ out.println("<tr>"+getFileVersion(jars[i])+"</tr>");
+ }
+ out.println("</table>");
+ if(comment!=null && comment.length()>0) {
+ out.println("<p>");
+ out.println(comment);
+ out.println("<p>");
+ }
+ }
+
+%>
+<h1>System Fingerprint</h1>
+<h2>JVM and Server Version</h2>
+<table>
+<tr>
+ <td>Servlet Engine</td>
+ <td><%= getServletConfig().getServletContext().getServerInfo() %></td>
+ <td><%= getServletConfig().getServletContext().getMajorVersion() %></td>
+ <td><%= getServletConfig().getServletContext().getMinorVersion() %></td>
+</tr>
+<tr>
+ <td>Java VM</td>
+ <td><%= System.getProperty("java.vm.vendor") %></td>
+ <td><%= System.getProperty("java.vm.name") %></td>
+ <td><%= System.getProperty("java.vm.version") %></td>
+</tr>
+<tr>
+ <td>Java RE</td>
+ <td><%= System.getProperty("java.vendor") %></td>
+ <td><%= System.getProperty("java.version") %></td>
+ <td> </td>
+</tr>
+<tr>
+ <td>Platform</td>
+ <td><%= System.getProperty("os.name") %></td>
+ <td><%= System.getProperty("os.arch") %></td>
+ <td><%= System.getProperty("os.version") %></td>
+</tr>
+</table>
+
+<%
+listClasspathProperty("Boot jars", out,"sun.boot.class.path", "Only valid on a sun jvm");
+listClasspathProperty("System jars", out,"java.class.path", null);
+listDirpathProperty("Extra system jars", out,"java.ext.dirs", null);
+listContextPath("Webapp jars", out, "/WEB-INF/lib", null);
+// identify the container...
+String container=getServletConfig().getServletContext().getServerInfo();
+if (container.startsWith("Tomcat Web Server/3.2")) {
+ String home=System.getProperty("tomcat.home");
+ if(home!=null) {
+ listDirectory("Tomcat 3.2 Common Jars", out,
+ home+File.separator
+ +"lib",
+ null);
+ }
+} else if (container.startsWith("Tomcat Web Server/3.3")) {
+ String home=System.getProperty("tomcat.home");
+ if(home!=null) {
+ listDirectory("Tomcat 3.3 Container Jars", out,
+ home+File.separator
+ +"lib"+File.separator
+ +"container",
+ null);
+ listDirectory("Tomcat 3.3 Common Jars", out,
+ home+File.separator
+ +"lib"+File.separator
+ +"common",
+ null);
+ }
+} else if (container.startsWith("Apache Tomcat/4.0")) {
+ //handle catalina common dir
+ String home=System.getProperty("catalina.home");
+ if(home!=null) {
+ listDirectory("Tomcat 4.0 Common Jars", out,
+ home+File.separator
+ +"common"+File.separator
+ +"lib",
+ null);
+ }
+} else if (container.startsWith("Apache Tomcat/4.1")) {
+ //handle catalina common dir
+ String home=System.getProperty("catalina.home");
+ if(home!=null) {
+ listDirectory("Tomcat 4.1 Common Jars", out,
+ home+File.separator
+ +"shared"+File.separator
+ +"lib",
+ null);
+ }
+} else if (System.getProperty("resin.home")!=null) {
+ String home=System.getProperty("resin.home");
+ if(home!=null) {
+ listDirectory("Resin Common Jars", out,
+ home+File.separator
+ +"lib",
+ null);
+ }
+} else if (System.getProperty("weblogic.httpd.servlet.classpath")!=null) {
+ listClasspathProperty("Weblogic Servlet Jars", out,
+ "weblogic.httpd.servlet.classpath",
+ null);
+} else {
+ //TODO: identify more servlet engine classpaths.
+}
+%>
+</body>
+</html>
\ No newline at end of file
Added: incubator/hermes/trunk/src/webapp/happyaxis.jsp
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/webapp/happyaxis.jsp?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/webapp/happyaxis.jsp Mon Jan 24 14:50:22 2005
@@ -0,0 +1,488 @@
+<html>
+<%@ page import="java.io.InputStream,
+ java.io.IOException,
+ javax.xml.parsers.SAXParser,
+ javax.xml.parsers.SAXParserFactory"
+ session="false" %>
+ <%
+ /*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+%>
+<head>
+<title>Axis Happiness Page</title>
+</head>
+<body bgcolor='#ffffff'>
+<%!
+
+ /*
+ * Happiness tests for axis. These look at the classpath and warn if things
+ * are missing. Normally addng this much code in a JSP page is mad
+ * but here we want to validate JSP compilation too, and have a drop-in
+ * page for easy re-use
+ * @author Steve 'configuration problems' Loughran
+ * @author dims
+ * @author Brian Ewins
+ */
+
+
+ /**
+ * Get a string providing install information.
+ * TODO: make this platform aware and give specific hints
+ */
+ public String getInstallHints(HttpServletRequest request) {
+
+ String hint=
+ "<B><I>Note:</I></B> On Tomcat 4.x and Java1.4, you may need to put libraries that contain "
+ +"java.* or javax.* packages into CATALINA_HOME/common/lib"
+ +"<br>jaxrpc.jar and saaj.jar are two such libraries.";
+ return hint;
+ }
+
+ /**
+ * test for a class existing
+ * @param classname
+ * @return class iff present
+ */
+ Class classExists(String classname) {
+ try {
+ return Class.forName(classname);
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+ }
+
+ /**
+ * test for resource on the classpath
+ * @param resource
+ * @return true iff present
+ */
+ boolean resourceExists(String resource) {
+ boolean found;
+ InputStream instream=this.getClass().getResourceAsStream(resource);
+ found=instream!=null;
+ if(instream!=null) {
+ try {
+ instream.close();
+ } catch (IOException e) {
+ }
+ }
+ return found;
+ }
+
+ /**
+ * probe for a class, print an error message is missing
+ * @param out stream to print stuff
+ * @param category text like "warning" or "error"
+ * @param classname class to look for
+ * @param jarFile where this class comes from
+ * @param errorText extra error text
+ * @param homePage where to d/l the library
+ * @return the number of missing classes
+ * @throws IOException
+ */
+ int probeClass(JspWriter out,
+ String category,
+ String classname,
+ String jarFile,
+ String description,
+ String errorText,
+ String homePage) throws IOException {
+ try {
+ Class clazz = classExists(classname);
+ if(clazz == null) {
+ String url="";
+ if(homePage!=null) {
+ url="<br> See <a href="+homePage+">"+homePage+"</a>";
+ }
+ out.write("<p>"+category+": could not find class "+classname
+ +" from file <b>"+jarFile
+ +"</b><br> "+errorText
+ +url
+ +"<p>");
+ return 1;
+ } else {
+ String location = getLocation(out, clazz);
+ if(location == null) {
+ out.write("Found "+ description + " (" + classname + ")<br>");
+ }
+ else {
+ out.write("Found "+ description + " (" + classname + ") at " + location + "<br>");
+ }
+ return 0;
+ }
+ } catch(NoClassDefFoundError ncdfe) {
+ String url="";
+ if(homePage!=null) {
+ url="<br> See <a href="+homePage+">"+homePage+"</a>";
+ }
+ out.write("<p>"+category+": could not find a dependency"
+ +" of class "+classname
+ +" from file <b>"+jarFile
+ +"</b><br> "+errorText
+ +url
+ +"<br>The root cause was: "+ncdfe.getMessage()
+ +"<br>This can happen e.g. if "+classname+" is in"
+ +" the 'common' classpath, but a dependency like "
+ +" activation.jar is only in the webapp classpath."
+ +"<p>");
+ return 1;
+ }
+ }
+
+ /**
+ * get the location of a class
+ * @param out
+ * @param clazz
+ * @return the jar file or path where a class was found
+ */
+
+ String getLocation(JspWriter out,
+ Class clazz) {
+ try {
+ java.net.URL url = clazz.getProtectionDomain().getCodeSource().getLocation();
+ String location = url.toString();
+ if(location.startsWith("jar")) {
+ url = ((java.net.JarURLConnection)url.openConnection()).getJarFileURL();
+ location = url.toString();
+ }
+
+ if(location.startsWith("file")) {
+ java.io.File file = new java.io.File(url.getFile());
+ return file.getAbsolutePath();
+ } else {
+ return url.toString();
+ }
+ } catch (Throwable t){
+ }
+ return "an unknown location";
+ }
+
+ /**
+ * a class we need if a class is missing
+ * @param out stream to print stuff
+ * @param classname class to look for
+ * @param jarFile where this class comes from
+ * @param errorText extra error text
+ * @param homePage where to d/l the library
+ * @throws IOException when needed
+ * @return the number of missing libraries (0 or 1)
+ */
+ int needClass(JspWriter out,
+ String classname,
+ String jarFile,
+ String description,
+ String errorText,
+ String homePage) throws IOException {
+ return probeClass(out,
+ "<b>Error</b>",
+ classname,
+ jarFile,
+ description,
+ errorText,
+ homePage);
+ }
+
+ /**
+ * print warning message if a class is missing
+ * @param out stream to print stuff
+ * @param classname class to look for
+ * @param jarFile where this class comes from
+ * @param errorText extra error text
+ * @param homePage where to d/l the library
+ * @throws IOException when needed
+ * @return the number of missing libraries (0 or 1)
+ */
+ int wantClass(JspWriter out,
+ String classname,
+ String jarFile,
+ String description,
+ String errorText,
+ String homePage) throws IOException {
+ return probeClass(out,
+ "<b>Warning</b>",
+ classname,
+ jarFile,
+ description,
+ errorText,
+ homePage);
+ }
+
+ /**
+ * probe for a resource existing,
+ * @param out
+ * @param resource
+ * @param errorText
+ * @throws Exception
+ */
+ int wantResource(JspWriter out,
+ String resource,
+ String errorText) throws Exception {
+ if(!resourceExists(resource)) {
+ out.write("<p><b>Warning</b>: could not find resource "+resource
+ +"<br>"
+ +errorText);
+ return 0;
+ } else {
+ out.write("found "+resource+"<br>");
+ return 1;
+ }
+ }
+
+
+ /**
+ * get servlet version string
+ *
+ */
+
+ public String getServletVersion() {
+ ServletContext context=getServletConfig().getServletContext();
+ int major = context.getMajorVersion();
+ int minor = context.getMinorVersion();
+ return Integer.toString(major) + '.' + Integer.toString(minor);
+ }
+
+
+
+ /**
+ * what parser are we using.
+ * @return the classname of the parser
+ */
+ private String getParserName() {
+ SAXParser saxParser = getSAXParser();
+ if (saxParser == null) {
+ return "Could not create an XML Parser";
+ }
+
+ // check to what is in the classname
+ String saxParserName = saxParser.getClass().getName();
+ return saxParserName;
+ }
+
+ /**
+ * Create a JAXP SAXParser
+ * @return parser or null for trouble
+ */
+ private SAXParser getSAXParser() {
+ SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
+ if (saxParserFactory == null) {
+ return null;
+ }
+ SAXParser saxParser = null;
+ try {
+ saxParser = saxParserFactory.newSAXParser();
+ } catch (Exception e) {
+ }
+ return saxParser;
+ }
+
+ /**
+ * get the location of the parser
+ * @return path or null for trouble in tracking it down
+ */
+
+ private String getParserLocation(JspWriter out) {
+ SAXParser saxParser = getSAXParser();
+ if (saxParser == null) {
+ return null;
+ }
+ String location = getLocation(out,saxParser.getClass());
+ return location;
+ }
+ %>
+<html><head><title>Axis Happiness Page</title></head>
+<body>
+<h1>Axis Happiness Page</h1>
+<h2>Examining webapp configuration</h2>
+
+<p>
+<h3>Needed Components</h3>
+<%
+ int needed=0,wanted=0;
+
+ /**
+ * the essentials, without these Axis is not going to work
+ */
+ needed=needClass(out, "javax.xml.soap.SOAPMessage",
+ "saaj.jar",
+ "SAAJ API",
+ "Axis will not work",
+ "http://xml.apache.org/axis/");
+
+ needed+=needClass(out, "javax.xml.rpc.Service",
+ "jaxrpc.jar",
+ "JAX-RPC API",
+ "Axis will not work",
+ "http://xml.apache.org/axis/");
+
+ needed+=needClass(out, "org.apache.axis.transport.http.AxisServlet",
+ "axis.jar",
+ "Apache-Axis",
+ "Axis will not work",
+ "http://xml.apache.org/axis/");
+
+ needed+=needClass(out, "org.apache.commons.discovery.Resource",
+ "commons-discovery.jar",
+ "Jakarta-Commons Discovery",
+ "Axis will not work",
+ "http://jakarta.apache.org/commons/discovery.html");
+
+ needed+=needClass(out, "org.apache.commons.logging.Log",
+ "commons-logging.jar",
+ "Jakarta-Commons Logging",
+ "Axis will not work",
+ "http://jakarta.apache.org/commons/logging.html");
+
+ needed+=needClass(out, "org.apache.log4j.Layout",
+ "log4j-1.2.8.jar",
+ "Log4j",
+ "Axis may not work",
+ "http://jakarta.apache.org/log4j");
+
+ //should we search for a javax.wsdl file here, to hint that it needs
+ //to go into an approved directory? because we dont seem to need to do that.
+ needed+=needClass(out, "com.ibm.wsdl.factory.WSDLFactoryImpl",
+ "wsdl4j.jar",
+ "IBM's WSDL4Java",
+ "Axis will not work",
+ null);
+
+ needed+=needClass(out, "javax.xml.parsers.SAXParserFactory",
+ "xerces.jar",
+ "JAXP implementation",
+ "Axis will not work",
+ "http://xml.apache.org/xerces-j/");
+
+ needed+=needClass(out,"javax.activation.DataHandler",
+ "activation.jar",
+ "Activation API",
+ "Axis will not work",
+ "http://java.sun.com/products/javabeans/glasgow/jaf.html");
+%>
+<h3>Optional Components</h3>
+<%
+ /*
+ * now the stuff we can live without
+ */
+ wanted+=wantClass(out,"javax.mail.internet.MimeMessage",
+ "mail.jar",
+ "Mail API",
+ "Attachments will not work",
+ "http://java.sun.com/products/javamail/");
+
+ wanted+=wantClass(out,"org.apache.xml.security.Init",
+ "xmlsec.jar",
+ "XML Security API",
+ "XML Security is not supported",
+ "http://xml.apache.org/security/");
+
+ wanted += wantClass(out, "javax.net.ssl.SSLSocketFactory",
+ "jsse.jar or java1.4+ runtime",
+ "Java Secure Socket Extension",
+ "https is not supported",
+ "http://java.sun.com/products/jsse/");
+ /*
+ * resources on the classpath path
+ */
+ /* broken; this is a file, not a resource
+ wantResource(out,"/server-config.wsdd",
+ "There is no server configuration file;"
+ +"run AdminClient to create one");
+ */
+ /* add more libraries here */
+
+ out.write("<h3>");
+ //is everythng we need here
+ if(needed==0) {
+ //yes, be happy
+ out.write("<i>The core axis libraries are present. </i>");
+ } else {
+ //no, be very unhappy
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ out.write("<i>"
+ +needed
+ +" core axis librar"
+ +(needed==1?"y is":"ies are")
+ +" missing</i>");
+ }
+ //now look at wanted stuff
+ if(wanted>0) {
+ out.write("<i>"
+ +wanted
+ +" optional axis librar"
+ +(wanted==1?"y is":"ies are")
+ +" missing</i>");
+ } else {
+ out.write("The optional components are present.");
+ }
+ out.write("</h3>");
+ //hint if anything is missing
+ if(needed>0 || wanted>0 ) {
+ out.write(getInstallHints(request));
+ }
+
+ %>
+ <p>
+ <B><I>Note:</I></B> Even if everything this page probes for is present, there is no guarantee your
+ web service will work, because there are many configuration options that we do
+ not check for. These tests are <i>necessary</i> but not <i>sufficient</i>
+ <hr>
+
+ <h2>Examining Application Server</h2>
+ <%
+ String servletVersion=getServletVersion();
+ String xmlParser=getParserName();
+ String xmlParserLocation = getParserLocation(out);
+
+ %>
+ <table>
+ <tr><td>Servlet version</td><td><%= servletVersion %></td></tr>
+ <tr><td>XML Parser</td><td><%= xmlParser %></td></tr>
+ <tr><td>XML ParserLocation</td><td><%= xmlParserLocation %></td></tr>
+ </table>
+<% if(xmlParser.indexOf("crimson")>=0) { %>
+ <p>
+ <b>We recommend <a href="http://xml.apache.org/xerces2-j/">Xerces 2</a>
+ over Crimson as the XML parser for Axis</b>
+ </p>
+<% } %>
+
+ <h2>Examining System Properties</h2>
+<%
+ /**
+ * Dump the system properties
+ */
+ java.util.Enumeration e=null;
+ try {
+ e= System.getProperties().propertyNames();
+ } catch (SecurityException se) {
+ }
+ if(e!=null) {
+ out.write("<pre>");
+ for (;e.hasMoreElements();) {
+ String key = (String) e.nextElement();
+ out.write(key + "=" + System.getProperty(key)+"\n");
+ }
+ out.write("</pre><p>");
+ } else {
+ out.write("System properties are not accessible<p>");
+ }
+%>
+ <hr>
+ Platform: <%= getServletConfig().getServletContext().getServerInfo() %>
+</body>
+</html>
+
+
Added: incubator/hermes/trunk/src/webapp/index.html
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/webapp/index.html?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/webapp/index.html Mon Jan 24 14:50:22 2005
@@ -0,0 +1,48 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type"
+content="text/html; charset=iso-8859-1">
+<title>Apache-Axis</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h1 align="center">Apache-AXIS</h1>
+
+<p>Hello! <em>Welcome</em> to Apache-Axis.</p>
+
+<p>What do you want to do today?</p>
+
+<ul>
+ <li><a href="happyaxis.jsp">Validate</a>
+ the local installation's configuration<br>
+ <i>see below if this does not work.</i></li>
+ <li><a href="servlet/AxisServlet">View</a>
+ the list of deployed Web services</li>
+ <li><a href="EchoHeaders.jws?method=list">
+ Call a local endpoint</a> that list's the caller's
+ http headers (or see its
+ <a href="EchoHeaders.jws?wsdl">WSDL</a>).
+ <li><a href="http://xml.apache.org/axis">Visit</a>
+ the Apache-Axis Home Page</li>
+ <li><a href="servlet/AdminServlet">Administer Axis</a> <br>
+ [disabled by default for security reasons]</li>
+ <li><a href="SOAPMonitor">SOAPMonitor</a> <br>
+ [disabled by default for security reasons]</li>
+</ul>
+To enable the disabled features, uncomment the appropriate declarations in
+WEB-INF/web.xml in the webapplication and restart it.
+<h3>Validating Axis</h3>
+
+If the "happyaxis" validation page displays an exception instead of a
+status page, the likely cause is that you have multiple XML parsers in
+your classpath. Clean up your classpath by eliminating extraneous parsers.
+
+<p>
+If you have problems getting Axis to work, consult the Axis
+<a
+href="http://nagoya.apache.org/wiki/apachewiki.cgi?AxisProjectPages">Wiki</a>
+and then try the Axis user mailing list.
+</body>
+</html>
Added: incubator/hermes/trunk/src/wsdl/SubscriptionManager.wsdl
Url: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/wsdl/SubscriptionManager.wsdl?view=auto&rev=126323
==============================================================================
--- (empty file)
+++ incubator/hermes/trunk/src/wsdl/SubscriptionManager.wsdl Mon Jan 24 14:50:22 2005
@@ -0,0 +1,166 @@
+<?xml version="1.0"?>
+
+<wsdl:definitions name="SubscriptionManagerDefinitions"
+ targetNamespace="http://ws.apache.org/notification/base/service/SubscriptionManager"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl"
+ xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl"
+ xmlns:wsnt="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd"
+ xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://ws.apache.org/notification/base/service/SubscriptionManager">
+
+ <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl"
+ location="../spec/wsrf/WS-ResourceProperties-1_2.wsdl"/>
+
+ <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl"
+ location="../spec/wsrf/WS-ResourceLifetime-1_2.wsdl"/>
+
+ <import namespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl"
+ location="../spec/wsn/WS-BaseNotification-1_2.wsdl"/>
+
+ <wsdl:portType name="SubscriptionManagerPortType" wsrp:ResourceProperties="wsnt:SubscriptionManagerRP">
+
+ <!-- === operations from wsrpw:ResourceProperties portType === -->
+ <wsdl:operation name="GetResourceProperty">
+ <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest"/>
+ <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse"/>
+ <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+ <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+ </wsdl:operation>
+
+ <!-- === operations from wsrlw:ImmediateResourceTermination portType === -->
+ <wsdl:operation name="Destroy">
+ <wsdl:input message="wsrlw:DestroyRequest"/>
+ <wsdl:output message="wsrlw:DestroyResponse"/>
+ <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+ <wsdl:fault name="ResourceNotDestroyedFault" message="wsrlw:ResourceNotDestroyedFault"/>
+ </wsdl:operation>
+
+ <!-- === operations from wsrlw:ScheduledResourceTermination portType === -->
+ <wsdl:operation name="SetTerminationTime">
+ <wsdl:input message="wsrlw:SetTerminationTimeRequest"/>
+ <wsdl:output message="wsrlw:SetTerminationTimeResponse"/>
+ <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+ <wsdl:fault name="UnableToSetTerminationTimeFault" message="wsrlw:UnableToSetTerminationTimeFault"/>
+ <wsdl:fault name="TerminationTimeChangeRejectedFault" message="wsrlw:TerminationTimeChangeRejectedFault"/>
+ </wsdl:operation>
+
+ <!-- === operations from wsntw:SubscriptionManager portType === -->
+ <wsdl:operation name="PauseSubcription">
+ <wsdl:input message="wsntw:PauseSubscriptionRequest"/>
+ <wsdl:output message="wsntw:PauseSubscriptionResponse"/>
+ <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+ <wsdl:fault name="PauseFailedFault" message="wsntw:PauseFailedFault"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="ResumeSubscription">
+ <wsdl:input message="wsntw:ResumeSubscriptionRequest"/>
+ <wsdl:output message="wsntw:ResumeSubscriptionResponse"/>
+ <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+ <wsdl:fault name="ResumeFailedFault" message="wsntw:ResumeFailedFault"/>
+ </wsdl:operation>
+
+ </wsdl:portType>
+
+ <wsdl:binding name="SubscriptionManagerHttpBinding" type="tns:SubscriptionManagerPortType">
+
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+ <wsdl:operation name="GetResourceProperty">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="ResourceUnknownFault">
+ <soap:fault name="ResourceUnknownFault" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="InvalidResourcePropertyQNameFault">
+ <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="Destroy">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="ResourceUnknownFault">
+ <soap:fault name="ResourceUnknownFault" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="ResourceNotDestroyedFault">
+ <soap:fault name="ResourceNotDestroyedFault" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="SetTerminationTime">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="ResourceUnknownFault">
+ <soap:fault name="ResourceUnknownFault" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="UnableToSetTerminationTimeFault">
+ <soap:fault name="UnableToSetTerminationTimeFault" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="TerminationTimeChangeRejectedFault">
+ <soap:fault name="TerminationTimeChangeRejectedFault" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="PauseSubcription">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="ResourceUnknownFault">
+ <soap:fault name="ResourceUnknownFault" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="PauseFailedFault">
+ <soap:fault name="PauseFailedFault" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ResumeSubscription">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="ResourceUnknownFault">
+ <soap:fault name="ResourceUnknownFault" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="ResumeFailedFault">
+ <soap:fault name="ResumeFailedFault" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+
+ </wsdl:binding>
+
+ <wsdl:service name="SubscriptionManagerService">
+
+ <wsdl:port name="subscriptionManager" binding="tns:SubscriptionManagerHttpBinding">
+ <soap:address location="http://localhost:8080/wsrf/services/subscriptionManager"/>
+ </wsdl:port>
+
+ </wsdl:service>
+
+</wsdl:definitions>
---------------------------------------------------------------------
To unsubscribe, e-mail: hermes-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: hermes-dev-help@ws.apache.org