package org.jolokia.it; import java.io.File; import java.io.IOException; import java.io.Serializable; import java.util.*; import javax.management.*; /* * 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. */ /** * @author roland * @since Aug 7, 2009 */ public class AttributeChecking implements AttributeCheckingMBean,MBeanRegistration { private boolean state = false; private int idx = 0; private String name = null; private String strings[] = { "Started", "Stopped" }; private int intValue = 0; private File file; private File origFile; private ObjectName objectName; private List list; private Map complexMap; private Map map; private Set set; private Object bean; private String domain; private Date date = new Date(); private Chili chili = Chili.AJI; public AttributeChecking(String pDomain) { domain = pDomain; reset(); } final public void reset() { try { state = false; idx = 0; intValue = 0; file = origFile; origFile = File.createTempFile("bla", ".txt"); file = origFile; objectName = new ObjectName("bla:type=blub"); list = Arrays.asList("jolokia", "habanero", 42); map = new HashMap(); map.put("fcn", "meister"); map.put("bayern", "mittelfeld"); map.put("zahl", 10L); complexMap = new HashMap(); List inner = new ArrayList(); Map anotherInner = new HashMap(); int innerInner[] = new int[]{42, 23}; anotherInner.put("numbers", innerInner); inner.add("Bla"); inner.add(anotherInner); complexMap.put("Blub",inner); bean = new TestBean(13,"roland"); set = new HashSet<String>(); set.add("jolokia"); set.add("habanero"); } catch (IOException e) { throw new RuntimeException("Couldnot create temporary file name",e); } catch (MalformedObjectNameException e) { throw new RuntimeException("Couldnot objectname",e); } } public boolean getState() { // Alternate state = !state; return state; } public String getString() { return strings[idx++ % 2]; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNull() { return null; } public long getBytes() { // 3.5 MB return 3 * 1024 * 1024 + 1024 * 512; } public long getMemoryUsed() { return (long) (1017.24 * 1024 * 1024); } // For https://github.com/rhuss/jmx4perl/issues/#issue/7 public long getMemoryMax() { return (long) (1.99 * 1024 * 1024 * 1024); } public float getLongSeconds() { // 2 days return 60*60*24*2; } public double getSmallMinutes() { // 10 ms return 1f/60 * 0.01; } public String[] getStringArray() { return strings; } public PojoBean[] createLargeArray(int nr) { PojoBean[] ret = new PojoBean[nr]; for (int i = 0; i < nr; i++) { ret[i] = new PojoBean("" + i,"value" + i); } return ret; } public List<List<PojoBean>> createLargeList(int nr) { List<List<PojoBean>> ret = new ArrayList<List<PojoBean>>(nr); for (int i = 0; i < nr; i++) { List<PojoBean> inner = new ArrayList<PojoBean>(i / 10); for (int j = 0; j < i / 10; j++) { inner.add(new PojoBean("" + j, i + ".")); } ret.add(inner); } return ret; } public void setStringArray(String[] array) { strings = array; } public int getIntValue() { return intValue; } public void setIntValue(int pValue) { intValue = pValue; } public File getFile() { return file; } public void setFile(File pFile) { file = pFile; } public ObjectName getObjectName() { return objectName; } public void setObjectName(ObjectName pObjectName) { objectName = pObjectName; } public List getList() { return list; } public void setList(List pList) { list = pList; } public Map getMap() { return map; } public void setMap(Map pMap) { map = pMap; } public Set getSet() { return set; } public void setSet(Set pSet) { set = pSet; } public Map getComplexNestedValue() { return complexMap; } public void setComplexNestedValue(Map map) { complexMap = map; } public Object getBean() { return bean; } public void setBean(Object object) { bean = object; } public Date getDate() { return date; } public void setDate(Date pDate) { date = pDate; } public void setWriteOnlyString(String pString) { // nothing to be done } public double getDoubleValueMin() { return 4.208154711E-212; } public double getDoubleValueMax() { return 4.208154711E+212; } public String getUtf8Content() { // UTF-8: E2 98 AF, Unicode: U+262F return "☯"; } public Chili getChili() { return chili; } public void setChili(Chili pChili) { chili = pChili; } public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception { return new ObjectName(domain + ":type=attribute"); } public void postRegister(Boolean registrationDone) { } public void preDeregister() throws Exception { } public void postDeregister() { } final static private class TestBean implements Serializable { private int value; private String name; private TestBean(int pValue, String pName) { value = pValue; name = pName; } public int getValue() { return value; } public void setValue(int pValue) { value = pValue; } public String getName() { return name; } public void setName(String pName) { name = pName; } } }