blob: 2792a1a85a01cb5603ab2cf2f4da6ec9c86a0ded [file] [log] [blame]
/*
* Copyright 2004,2005 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.axis2.transport.jms.ctype;
import java.util.Iterator;
import javax.jms.BytesMessage;
import javax.jms.TextMessage;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.description.Parameter;
/**
* Utility class to create content type rules and rule sets from XML.
*/
public class ContentTypeRuleFactory {
private ContentTypeRuleFactory() {}
public static ContentTypeRule parse(OMElement element) throws AxisFault {
String name = element.getLocalName();
String value = element.getText();
if (name.equals("jmsProperty")) {
return new PropertyRule(value);
} else if (name.equals("textMessage")) {
return new MessageTypeRule(TextMessage.class, value);
} else if (name.equals("bytesMessage")) {
return new MessageTypeRule(BytesMessage.class, value);
} else if (name.equals("default")) {
return new DefaultRule(value);
} else {
throw new AxisFault("Unknown content rule type '" + name + "'");
}
}
public static ContentTypeRuleSet parse(Parameter param) throws AxisFault {
ContentTypeRuleSet ruleSet = new ContentTypeRuleSet();
Object value = param.getValue();
if (value instanceof OMElement) {
OMElement element = (OMElement)value;
if (element.getLocalName().equals("rules")) {
for (Iterator it = element.getChildElements(); it.hasNext(); ) {
ruleSet.addRule(parse((OMElement)it.next()));
}
} else {
throw new AxisFault("Expected <rules> element");
}
} else {
ruleSet.addRule(new DefaultRule((String)value));
}
return ruleSet;
}
}