package org.jolokia.it;
/*
* Copyright 2009-2013 Roland Huss
*
* 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.
*/
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.management.*;
import javax.management.openmbean.TabularData;
/**
* @author roland
* @since Jun 30, 2009
*/
public class OperationChecking implements OperationCheckingMBean,MBeanRegistration {
private int counter = 0;
private String domain;
public OperationChecking(String pDomain) {
domain = pDomain;
}
public void reset() {
counter = 0;
}
public int fetchNumber(String arg) {
if ("inc".equals(arg)) {
return counter++;
} else {
throw new IllegalArgumentException("Invalid arg " + arg);
}
}
public void throwCheckedException() throws Exception {
throw new Exception("Inner exception");
}
public void throwRuntimeException() {
throw new IllegalArgumentException("Illegal Argument", new IllegalStateException("Illegal State"));
}
public boolean nullArgumentCheck(String arg1,Object arg2) {
return arg1 == null && arg2 == null;
}
public boolean emptyStringArgumentCheck(String arg1) {
return arg1 != null && arg1.length() == 0;
}
public String arrayArguments(String args[], String extra) {
return args[0];
}
public Object objectArrayArg(Object[] args) {
if (args == null) {
return null;
} else {
return args[0];
}
}
public Object listArgument(List arg) {
if (arg == null) {
return null;
}
return arg.get(0);
}
public Boolean booleanArguments(boolean arg1, Boolean arg2) {
if (arg2 == null) {
return null;
}
return arg1 && arg2;
}
public Map mapArgument(Map arg) {
return arg;
}
public int intArguments(int arg1, Integer arg2) {
if (arg2 == null) {
return -1;
}
return arg1 + arg2;
}
public double doubleArguments(double arg1, Double arg2) {
if (arg2 == null) {
return -1.0;
}
return arg1 + arg2;
}
public BigDecimal addBigDecimal(int first,BigDecimal second) {
return second.add(BigDecimal.valueOf(first));
}
public TabularData update(String name, TabularData data) {
return data;
}
public int overloadedMethod() {
return 0;
}
public int overloadedMethod(String arg) {
return 1;
}
public int overloadedMethod(String arg, int arg2) {
return 2;
}
public int overloadedMethod(String[] arg) {
return 3;
}
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception {
return new ObjectName(domain + ":type=operation");
}
public void postRegister(Boolean registrationDone) {
}
public void preDeregister() throws Exception {
}
public void postDeregister() {
}
public int sleep(int seconds) throws InterruptedException {
synchronized(this) {
this.wait(seconds * 1000);
}
return seconds;
}
public String echo(String pEcho) {
return pEcho;
}
public TimeUnit findTimeUnit(TimeUnit unit) {
return unit;
}
}