public void release() { if (domDescriptor != null) { // children added via createProxy are not registered in serviceLocator ServiceLocatorUtilities.removeOneDescriptor(getHabitat(), domDescriptor, true); } listeners.clear(); }
/** * Copy constructor, used to get a deep copy of the passed instance * @param source the instance to copy */ public Dom(Dom source, Dom parent) { this(source.getHabitat(), source.document, parent, source.model); List<Child> newChildren = new ArrayList<Child>(); for (Child child : source.children) { newChildren.add(child.deepCopy(this)); } setChildren(newChildren); attributes.putAll(source.attributes); }
protected Object convertLeafValue(Dom parent, Class<?> returnType, String v) { // let's look first the fast way. Object candidate = parent.getHabitat().getService(returnType, v); if (candidate!=null) { return returnType.cast(candidate); } parent = parent.getSymbolSpaceRoot(v); Dom dom = parent.resolveReference(v,returnType.getName()); if (dom!=null) { return returnType.cast(dom.get()); } else { throw new IllegalArgumentException("Cannot find an instance of " + returnType + " named " + v); } }
@Override public Object get(Dom dom, Type returnType) { String id = dom.leafElement(xmlName); Class<?> type = Types.erasure(returnType); // let's look first the fast way. Object candidate = dom.getHabitat().getService(type, id); if (candidate!=null) { return type.cast(candidate); } dom = dom.getSymbolSpaceRoot(id); return type.cast(dom.resolveReference(id,type.getName()).get()); }
/** * Replaces an existing {@link NodeChild} with another one. * * @see #insertAfter(Dom, String, Dom) */ public synchronized void replaceChild(Dom reference, String name, Dom newNode) { ListIterator<Child> itr = children.listIterator(); while(itr.hasNext()) { Child child = itr.next(); if (child instanceof NodeChild) { NodeChild nc = (NodeChild) child; if(nc.dom==reference) { reference.release(); newNode.domDescriptor = addWithAlias(getHabitat(), newNode,newNode.getProxyType(), newNode.getKey()); itr.set(new NodeChild(name,newNode)); return; } } } throw new IllegalArgumentException(reference+" is not a valid child of "+this+". Children="+children); }
newNode.domDescriptor = addWithAlias(getHabitat(), newNode, newNode.getProxyType(), newNode.getKey()); return; if(nc.dom==reference) { itr.add(newChild); newNode.domDescriptor = addWithAlias(getHabitat(), newNode, newNode.getProxyType(), newNode.getKey());
@Override public Object get(Dom dom, Type returnType) { String id = dom.attribute(xmlName); // since the id is supposed to be the element's key, if no key, no element. if (id==null) { return null; } Class<?> type = Types.erasure(returnType); // let's look first the fast way. Object candidate = dom.getHabitat().getService(type, id); if (candidate!=null) { return type.cast(candidate); } dom = dom.getSymbolSpaceRoot(id); return type.cast(dom.resolveReference(id,type.getName()).get()); }
/* package */ void ensureConstraints(List<Child> children) { Set<String> nullElements = new HashSet<String>(model.getElementNames()); for (Child child : children) { nullElements.remove(child.name); } for (String s : nullElements) { ConfigModel.Property p = model.getElement(s); for (String annotation : p.getAnnotations()) { if (annotation.equals(NotNull.class.getName())) { if (p instanceof ConfigModel.Node) { ConfigModel childModel = ((ConfigModel.Node) p).model; Dom child = document.make(getHabitat(), null, this, childModel); child.register(); children.add(new Dom.NodeChild(s, child)); // recursive call to ensure the children constraints are also respected List<Child> grandChildren = new ArrayList<Child>(); child.ensureConstraints(grandChildren); if (!grandChildren.isEmpty()) { child.setChildren(grandChildren); } child.initializationCompleted(); } } } } }
serviceHandle = getHabitat().getServiceHandle(domDescriptor);
public void testHabitatFromDom() { SimpleConnector sc = habitat.getService(SimpleConnector.class); EjbContainerAvailability ejb = sc.getEjbContainerAvailability(); Dom ejbDom = Dom.unwrap(ejb); assert(ejbDom.getHabitat() != null); }
public void testDomTx() { SimpleConnector sc = habitat.getService(SimpleConnector.class); EjbContainerAvailability ejb = sc.getEjbContainerAvailability(); Dom ejbDom = Dom.unwrap(ejb); assert(ejbDom.getHabitat() != null); String avEnabled = ejb.getAvailabilityEnabled(); try { ConfigSupport.apply(new SingleConfigCode<EjbContainerAvailability>() { @Override public Object run(EjbContainerAvailability param) throws PropertyVetoException, TransactionFailure { param.setSfsbHaPersistenceType("coherence"); param.setSfsbCheckpointEnabled("**MUST BE**"); return null; } }, ejb); //printEjb("AFTER CHANGES", ejb); assert(ejb.getSfsbHaPersistenceType().equals("coherence") && ejb.getSfsbCheckpointEnabled().equals("**MUST BE**") && ejb.getAvailabilityEnabled().equals(avEnabled)); } catch (Exception e) { e.printStackTrace(); assert(false); } }
public void testDomTxReadOnlyAttributes() { SimpleConnector sc = habitat.getService(SimpleConnector.class); final EjbContainerAvailability ejb = sc.getEjbContainerAvailability(); Dom ejbDom = Dom.unwrap(ejb); assert(ejbDom.getHabitat() != null); String origAVEnabled = ejb.getAvailabilityEnabled(); final String origSFSBHaPersistenceType = ejb.getSfsbHaPersistenceType(); try { ConfigSupport.apply(new SingleConfigCode<EjbContainerAvailability>() { @Override public Object run(EjbContainerAvailability param) throws PropertyVetoException, TransactionFailure { param.setSfsbHaPersistenceType("99999.999"); param.setSfsbCheckpointEnabled("**MUST BE**"); assert(origSFSBHaPersistenceType.equals(ejb.getSfsbHaPersistenceType())); assert(! ejb.getSfsbHaPersistenceType().equals(param.getSfsbHaPersistenceType())); return null; } }, ejb); //printEjb("AFTER CHANGES", ejb); assert(ejb.getSfsbHaPersistenceType().equals("99999.999") && ejb.getSfsbCheckpointEnabled().equals("**MUST BE**") && ejb.getAvailabilityEnabled().equals(origAVEnabled)); } catch (Exception e) { e.printStackTrace(); assert(false); } }
public void release() { if (domDescriptor != null) { // children added via createProxy are not registered in serviceLocator ServiceLocatorUtilities.removeOneDescriptor(getHabitat(), domDescriptor, true); } listeners.clear(); }
public void release() { if (domDescriptor != null) { // children added via createProxy are not registered in serviceLocator ServiceLocatorUtilities.removeOneDescriptor(getHabitat(), domDescriptor, true); } listeners.clear(); }
@Override public Object get(Dom dom, Type returnType) { String id = dom.leafElement(xmlName); Class<?> type = Types.erasure(returnType); // let's look first the fast way. Object candidate = dom.getHabitat().getService(type, id); if (candidate!=null) { return type.cast(candidate); } dom = dom.getSymbolSpaceRoot(id); return type.cast(dom.resolveReference(id,type.getName()).get()); }
@Override public Object get(Dom dom, Type returnType) { String id = dom.leafElement(xmlName); Class<?> type = Types.erasure(returnType); // let's look first the fast way. Object candidate = dom.getHabitat().getComponent(type, id); if (candidate!=null) { return type.cast(candidate); } dom = dom.getSymbolSpaceRoot(id); return type.cast(dom.resolveReference(id,type.getName()).get()); }
public static boolean isDefaultLocalNode(Node node) { Dom serverDom = Dom.unwrap(node); Domain domain = serverDom.getHabitat().getComponent(Domain.class); if (node.getName().equals("localhost-" + domain.getName())) { return true; } return false; }
public static boolean isDefaultLocalNode(Node node) { Dom serverDom = Dom.unwrap(node); Domain domain = serverDom.getHabitat().getService(Domain.class); if (node.getName().equals("localhost-" + domain.getName())) { return true; } return false; }
public static Node getDefaultLocalNode(Nodes nodes) { if (nodes == null) { return null; } Dom serverDom = Dom.unwrap(nodes); Domain domain = serverDom.getHabitat().getComponent(Domain.class); for (Node node : nodes.getNode()) { if (node.getName().equals("localhost-"+domain.getName())) { return node; } } return null; } }
public static Cluster getCluster(Server server) { Dom serverDom = Dom.unwrap(server); Clusters clusters = serverDom.getHabitat().getService(Clusters.class); if (clusters != null) { for (Cluster cluster : clusters.getCluster()) { for (ServerRef serverRef : cluster.getServerRef()) { if (serverRef.getRef().equals(server.getName())) { return cluster; } } } } return null; }