blob: 41f2959eca350987e28d2c77f30ab2c4707ba32a [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.camel.component.jmx.beans;
import java.util.ArrayList;
import java.util.List;
import javax.management.AttributeChangeNotification;
import javax.management.MBeanServerNotification;
import javax.management.Notification;
import javax.management.NotificationBroadcasterSupport;
import javax.management.ObjectName;
import javax.management.relation.RelationNotification;
import javax.management.remote.JMXConnectionNotification;
import javax.management.timer.TimerNotification;
/**
* Simple bean that is used for testing.
*/
public class SimpleBean extends NotificationBroadcasterSupport implements ISimpleMXBean {
private static final long serialVersionUID = -1230507995730071242L;
private int mSequence;
/**
* Use the same timestamp every time so the assertions are easier
*/
private long mTimestamp;
private String mStringValue;
private int mMonitorNumber;
public String getStringValue() {
return mStringValue;
}
public void setStringValue(String aStringValue) {
String oldValue = getStringValue();
mStringValue = aStringValue;
AttributeChangeNotification acn = new AttributeChangeNotification(
this, mSequence++, mTimestamp, "attribute changed", "stringValue", "string", oldValue, mStringValue);
sendNotification(acn);
}
public Integer getMonitorNumber() {
return mMonitorNumber;
}
public void setMonitorNumber(Integer aNumber) {
mMonitorNumber = aNumber;
}
public int getSequence() {
return mSequence;
}
public void setSequence(int aSequence) {
mSequence = aSequence;
}
public long getTimestamp() {
return mTimestamp;
}
public void setTimestamp(long aTimestamp) {
mTimestamp = aTimestamp;
}
public void userData(String aUserData) {
Notification n = new Notification("userData", this, mSequence++, mTimestamp, "Here's my user data");
n.setUserData(aUserData);
sendNotification(n);
}
public void touch() {
Notification n = new Notification("touched", this, mSequence++, mTimestamp, "I was touched");
sendNotification(n);
}
public void triggerConnectionNotification() {
JMXConnectionNotification n = new JMXConnectionNotification("connection", this,
"conn-123", mSequence++, "connection notification", null);
n.setTimeStamp(mTimestamp);
sendNotification(n);
}
public void triggerMBeanServerNotification() throws Exception {
MBeanServerNotification n = new MBeanServerNotification("mbeanserver", this, mSequence++, new ObjectName("TestDomain", "name", "foo"));
n.setTimeStamp(mTimestamp);
sendNotification(n);
}
public void triggerRelationNotification() throws Exception {
List<ObjectName> list = new ArrayList<ObjectName>();
for (int i = 1; i <= 3; i++) {
list.add(new ObjectName("TestDomain", "name", "mbean-" + i));
}
RelationNotification n = new RelationNotification(RelationNotification.RELATION_BASIC_CREATION,
new ObjectName("TestDomain", "name", "source"), mSequence++, mTimestamp,
"relation message",
"relation-id",
"relation.type",
new ObjectName("TestDomain", "name", "foo"),
list);
sendNotification(n);
}
public void triggerTimerNotification() {
TimerNotification n = new TimerNotification("timer.notification", this, mSequence++, mTimestamp, "timer-notification", 100);
sendNotification(n);
}
}