[jboss-cvs] JBossAS SVN: r60952 - in trunk: profileservice/src/main/org/jboss/profileservice/management/builders and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 27 13:14:12 EST 2007
Author: scott.stark at jboss.org
Date: 2007-02-27 13:14:12 -0500 (Tue, 27 Feb 2007)
New Revision: 60952
Modified:
trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java
trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java
trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java
trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java
trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java
trunk/profileservice/src/resources/profileservice-beans.xml
trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java
trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java
trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java
trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java
trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java
Log:
JBMICROCONT-151, refactor the attachment api on DeploymentUnit to facilitate proper usage
Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -392,19 +392,27 @@
checkIncomplete();
}
+ /**
+ * Called by the DeployerAspects to register a deployment as a
+ * ComponentType.
+ */
public void updateComponentType(DeploymentUnit unit, ComponentType type)
{
DeploymentContext ctx = unit.getDeploymentContext();
log.debug("updateComponentType, unit="+unit.getName()+", type="+type);
ctxToCompType.put(ctx, type);
DeploymentContext topCtx = ctx.getTopLevel();
- if( ctxToDeployment.containsKey(topCtx) == false )
+ if( type.getSubtype().equals("Topic") )
+ log.info("Saw Topic");
+ if( ctxToDeployment.containsKey(ctx) == false )
{
+ // This deployment unit has not been indexed yet
try
{
+ // Rebuild the ManagedDeployment structure
ManagedDeployment md = getManagedDeployment(topCtx);
indexComponents(md);
- ctxToDeployment.put(topCtx, md);
+ ctxToDeployment.put(ctx, md);
}
catch(Exception e)
{
Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -29,13 +29,13 @@
import org.jboss.logging.Logger;
import org.jboss.managed.api.ManagedObject;
import org.jboss.managed.plugins.advice.WrapperAdvice;
-import org.jboss.system.metadata.ServiceDeployment;
+import org.w3c.dom.Document;
/**
* A ManagedObjectBuilder for use as an override to the ConnectionFactoryDeployer
*
* @author Scott.Stark at jboss.org
- * @version $Revision:$
+ * @version $Revision$
*/
public class ConnectionFactoryDeployerManagedObjectBuilder
implements ManagedObjectBuilder
@@ -48,10 +48,9 @@
String name = unit.getSimpleName();
if(name.endsWith("-ds.xml"))
{
- Map<String, Object> attachments = unit.getAttachments();
- log.info(name+" attachments: "+attachments);
- ServiceDeployment dsMetaData = unit.getAttachment(ServiceDeployment.class);
- String attachName = ServiceDeployment.class.getName();
+ Map<String, Object> attachments = unit.getTransientManagedObjects().getAttachments();
+ log.debug(name+" attachments: "+attachments);
+ String attachName = Document.class.getName();
ManagedObject mo = new DomDataSourceManagedObject(attachName);
ManagedObject wrapMO = WrapperAdvice.wrapManagedObject(mo);
map.put(attachName, wrapMO);
Property changes on: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/ConnectionFactoryDeployerManagedObjectBuilder.java
___________________________________________________________________
Name: svn:keywords
- Id,Revision
+ Id Revision
Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/builders/DomFields.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -73,7 +73,7 @@
{
if (VALUE.equals(name))
{
- String string = (String) value;
+ String string = value.toString();
String elementName = getElementName();
NodeList nodes = element.getElementsByTagName(elementName);
Element childElement = null;
Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/builders/FakeConnectionFactoryDeployerManagedObjectBuilder.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -77,7 +77,7 @@
String name = unit.getSimpleName();
if(name.endsWith("-dsf.xml"))
{
- Map<String, Object> attachments = unit.getAttachments();
+ Map<String, Object> attachments = unit.getTransientManagedObjects().getAttachments();
log.info(name+" attachments: "+attachments);
ServiceDeployment service = unit.getAttachment(ServiceDeployment.class);
if( service == null )
Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/templates/DsXmlDataSourceTemplate.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -24,11 +24,22 @@
import java.io.File;
import java.io.FileWriter;
import java.net.URI;
+import java.util.Map;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
import org.jboss.deployers.spi.management.DeploymentTemplate;
import org.jboss.deployers.spi.management.DeploymentTemplateInfo;
import org.jboss.deployers.spi.structure.DeploymentContext;
+import org.jboss.logging.Logger;
+import org.jboss.managed.api.ManagedProperty;
import org.jboss.virtual.VirtualFile;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+import org.jboss.util.xml.DOMWriter;
/**
* A template for creating a datasource(*-ds.xml) deployments.
@@ -39,6 +50,7 @@
public class DsXmlDataSourceTemplate
implements DeploymentTemplate
{
+ private static final Logger log = Logger.getLogger(DsXmlDataSourceTemplate.class);
private DeploymentTemplateInfo info;
/**
@@ -55,11 +67,38 @@
VirtualFile dsXmlVF = root.findChild(dsName);
return dsXmlVF;
}
+
+ /**
+ * Update the ctx with the metadata values that correspond to the
+ * template info values.
+ * @param ctx - the DeploymentContext to associate metadata to
+ * @param values - the managed property values passed to apply.
+ */
public void updateTemplateDeployment(DeploymentContext ctx,
DeploymentTemplateInfo values)
throws Exception
{
-
+ // Add the -ds.xml Document metadata
+ Document document = null;
+ try
+ {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ DOMImplementation impl = builder.getDOMImplementation();
+ document = impl.createDocument(null, null, null);
+ Element element = document.createElement("datasources");
+ document.appendChild(element);
+ }
+ catch (RuntimeException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Error creating dom", e);
+ }
+
+ ctx.getPredeterminedManagedObjects().addAttachment(Document.class, document);
}
public DeploymentTemplateInfo getInfo()
@@ -84,4 +123,38 @@
fw.flush();
fw.close();
}
+
+ protected Document buildDocument(DeploymentTemplateInfo values)
+ throws Exception
+ {
+ Document document = null;
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ DOMImplementation impl = builder.getDOMImplementation();
+ document = impl.createDocument(null, null, null);
+ Element ds = document.createElement("datasources");
+ document.appendChild(ds);
+ Map<String, ManagedProperty> properties = values.getProperties();
+ // datasource-type
+ ManagedProperty dsType = properties.get("datasource-type");
+ if( dsType == null || dsType.getValue() == null )
+ throw new IllegalStateException("Required datasource-type value not found");
+ Element dsTypeElem = document.createElement(dsType.getValue().toString());
+ ds.appendChild(dsTypeElem);
+ // All other
+ for(ManagedProperty p : properties.values())
+ {
+ String tagName = p.getName();
+ if( p.isMandatory() && p.getValue() == null )
+ throw new IllegalStateException("Required "+tagName+" value not found");
+ Element element = document.createElement(tagName);
+ Text t = document.createTextNode(p.getValue().toString());
+ element.appendChild(t);
+ dsTypeElem.appendChild(element);
+ }
+
+ log.debug("Updated metadata to: "+DOMWriter.printNode(document, true));
+ return document;
+ }
+
}
Modified: trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/main/org/jboss/profileservice/mock/ds/FakeDataSourceDeployer.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -95,7 +95,7 @@
String name = unit.getSimpleName();
if(name.endsWith("-dsf.xml"))
{
- Map<String, Object> attachments = unit.getAttachments();
+ Map<String, Object> attachments = unit.getTransientManagedObjects().getAttachments();
log.info(name+" attachments: "+attachments);
ServiceDeployment service = unit.getAttachment(ServiceDeployment.class);
if( service == null )
Modified: trunk/profileservice/src/resources/profileservice-beans.xml
===================================================================
--- trunk/profileservice/src/resources/profileservice-beans.xml 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/profileservice/src/resources/profileservice-beans.xml 2007-02-27 18:14:12 UTC (rev 60952)
@@ -67,6 +67,20 @@
<!-- DeploymentTemplates -->
<bean name="DsXmlDataSourceTemplate"
+ class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplate">
+ <install bean="ManagementView" method="addTemplate">
+ <parameter>
+ <this/>
+ </parameter>
+ </install>
+ <uninstall bean="ManagementView" method="removeTemplate">
+ <parameter>
+ <this/>
+ </parameter>
+ </uninstall>
+ <property name="info"><inject bean="DsXmlDataSourceTemplateInfo"/></property>
+ </bean>
+ <bean name="FakeDsXmlDataSourceTemplate"
class="org.jboss.profileservice.management.templates.FakeDsXmlDataSourceTemplate">
<install bean="ManagementView" method="addTemplate">
<parameter>
@@ -78,13 +92,14 @@
<this/>
</parameter>
</uninstall>
- <property name="info"><inject bean="DsXmlDataSourceTemplateInfo"/></property>
+ <property name="info"><inject bean="FakeDsXmlDataSourceTemplateInfo"/></property>
<property name="deployer"><inject bean="FakeDataSourceDeployer" /></property>
</bean>
- <bean name="DsXmlDataSourceTemplateInfo"
+
+ <bean name="FakeDsXmlDataSourceTemplateInfo"
class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplateInfo">
<constructor>
- <parameter>DsXmlDataSourceTemplate</parameter>
+ <parameter>FakeDsXmlDataSourceTemplateInfo</parameter>
<parameter>A template for *-dsf.xml deployments</parameter>
<parameter>org.jboss.system.metadata.ServiceMetaData</parameter>
</constructor>
@@ -95,6 +110,20 @@
<inject bean="DsPropertyMappings" />
</property>
</bean>
+ <bean name="DsXmlDataSourceTemplateInfo"
+ class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplateInfo">
+ <constructor>
+ <parameter>DsXmlDataSourceTemplate</parameter>
+ <parameter>A template for *-ds.xml deployments</parameter>
+ <parameter>org.w3c.dom.Document</parameter>
+ </constructor>
+ <!-- Specify a mapping from service attribute names used by the datasource
+ deployment ServiceMetaData to ManagedProperty names.
+ -->
+ <property name="propertyNameMappings">
+ <inject bean="DsPropertyMappings" />
+ </property>
+ </bean>
<bean name="DsPropertyMappings" class="java.util.HashMap">
<constructor>
<map class="java.util.HashMap" keyClass="java.lang.String" valueClass="java.lang.String">
Property changes on: trunk/profileservice/src/resources/profileservice-beans.xml
___________________________________________________________________
Name: svn:keywords
- Id, Revision
+ Id Revision
Modified: trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java
===================================================================
--- trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/profileservice/aop/DeployerAspects.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -49,6 +49,7 @@
private static ComponentTypeVisitor compVisitor;
private static ComponentTypeListener compListener;
private static AttachmentsSerializer attachmentsSerializer;
+ private static boolean trace = log.isTraceEnabled();
public static ComponentTypeVisitor getCompVisitor()
{
@@ -88,7 +89,8 @@
public Object invoke(Invocation invocation) throws Throwable
{
- log.debug(invocation);
+ if( trace )
+ log.trace(invocation);
MethodInvocation mi = (MethodInvocation) invocation;
String methodName = mi.getMethod().getName();
Object value = null;
@@ -117,7 +119,8 @@
Deployer target = Deployer.class.cast(invocation.getTargetObject());
Object[] args = invocation.getArguments();
DeploymentUnit unit = DeploymentUnit.class.cast(args[0]);
- log.debug("prepareDeploy, target="+target+", unit="+unit.getSimpleName());
+ if( trace )
+ log.trace("prepareDeploy, target="+target+", unit="+unit.getSimpleName());
if( attachmentsSerializer != null )
{
ClassLoader loader = null;
@@ -160,7 +163,8 @@
Object[] args = invocation.getArguments();
Deployer target = Deployer.class.cast(invocation.getTargetObject());
DeploymentUnit unit = DeploymentUnit.class.cast(args[0]);
- log.debug("commitDeploy, target="+target+", unit="+unit.getSimpleName());
+ if( trace )
+ log.trace("commitDeploy, target="+target+", unit="+unit.getSimpleName());
if( compVisitor != null )
{
ComponentType type = compVisitor.visit(unit);
@@ -199,7 +203,8 @@
throws Throwable
{
Object target = invocation.getTargetObject();
- log.debug("prepareUndeploy, target="+target);
+ if( trace )
+ log.trace("prepareUndeploy, target="+target);
return invocation.invokeNext();
}
public Object commitUndeploy(MethodInvocation invocation)
@@ -207,7 +212,8 @@
{
Object target = invocation.getTargetObject();
Object value = invocation.invokeNext();
- log.debug("commitUndeploy, target="+target);
+ if( trace )
+ log.trace("commitUndeploy, target="+target);
return value;
}
Modified: trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java
===================================================================
--- trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/profileservice/aop/TrackingAdvice.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -43,6 +43,7 @@
private static Logger log = Logger.getLogger(TrackingAdvice.class);
private static ConcurrentHashMap<Object, Map<String, Object>> attachmentsByTarget =
new ConcurrentHashMap<Object, Map<String, Object>>();
+ private static boolean trace;
public static Attachments wrapAttachments(Attachments attachments)
{
@@ -52,13 +53,16 @@
public Object invoke(Invocation inv)
throws Throwable
{
- log.info("invoke, "+inv);
+ if( trace )
+ log.trace("invoke, "+inv);
return inv.invokeNext();
}
public Object addAttachment(MethodInvocation mi)
throws Throwable
{
+ if( trace )
+ log.trace(mi);
Object target = mi.getTargetObject();
Object[] args = mi.getArguments();
Object value = mi.invokeNext();
@@ -113,7 +117,7 @@
public static Map<String, Object> clearAttachmentsForTarget(Object key)
{
Map<String, Object> attachments = attachmentsByTarget.remove(key);
- if( log.isTraceEnabled() )
+ if( trace )
log.trace("clearAttachmentsForTarget, target="+key+" :"+attachments);
return attachments;
}
@@ -127,7 +131,8 @@
attachmentsByTarget.put(target, attachments);
}
attachments.put(name, attachment);
- log.debug("addAttachment, target="+target+", name="+name);
+ if( trace )
+ log.trace("addAttachment, target="+target+", name="+name+", attachment="+attachment);
}
private static void removeAttachment(Object target, String name)
{
@@ -138,7 +143,8 @@
if( attachments.size() == 0 )
attachmentsByTarget.remove(target);
}
- log.debug("removeAttachment, target="+target+", name="+name);
+ if( trace )
+ log.trace("removeAttachment, target="+target+", name="+name);
}
/**
@@ -160,7 +166,7 @@
params.setObjectAsSuperClass(true);
params.setTarget(target);
Object proxy = proxyFactory.createAdvisedProxy(params);
- if( log.isTraceEnabled() )
+ if( trace )
log.trace("Created proxy: "+proxy.getClass()+"@"+System.identityHashCode(proxy)+" target: "+target.getClass());
return interfaceClass.cast(proxy);
}
Modified: trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/system/server/profileservice/repository/AbstractFileAttachmentsSerializer.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -89,7 +89,7 @@
throw new IOException("Failed to create attachmentsParent: "+attachmentsParent.getAbsolutePath());
}
- Map<String, Object> attachments = TrackingAdvice.clearAttachmentsForTarget(ctx.getTransientManagedObjects());
+ Map<String, Object> attachments = TrackingAdvice.clearAttachmentsForTarget(ctx.getTransientAttachments());
if( attachments != null )
saveAttachments(attachmentsStore, attachments, loader);
}
Modified: trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/system/server/profileservice/repository/JavaSerializationAttachmentsSerializer.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -47,6 +47,7 @@
protected Map<String, Object> loadAttachments(File attachmentsStore, ClassLoader loader)
throws Exception
{
+ log.debug("loadAttachments, attachmentsStore="+attachmentsStore);
Thread.currentThread().setContextClassLoader(loader);
FileInputStream fis = new FileInputStream(attachmentsStore);
ObjectInputStream ois = new TCLObjectInputStream(fis, loader);
@@ -74,6 +75,15 @@
Map<String, Object> map, ClassLoader loader)
throws Exception
{
+ log.debug("saveAttachments, attachmentsStore="+attachmentsStore);
+ if( log.isTraceEnabled() )
+ {
+ log.trace("Attachments.size: "+map.size());
+ for(String key : map.keySet())
+ {
+ log.trace(key+", "+map.get(key));
+ }
+ }
FileOutputStream fos = new FileOutputStream(attachmentsStore);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(map);
Modified: trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java 2007-02-27 18:04:43 UTC (rev 60951)
+++ trunk/system/src/main/org/jboss/system/server/profileservice/repository/SerializableDeploymentRepository.java 2007-02-27 18:14:12 UTC (rev 60952)
@@ -581,13 +581,13 @@
ClassLoader prevTCL = Thread.currentThread().getContextClassLoader();
try
{
- Map<String, Object> map = null; //serializer.loadAttachments(ctx, prevTCL);
+ Map<String, Object> map = null;
if( map != null )
{
for(String key : map.keySet())
{
Object value = map.get(key);
- ctx.getTransientAttachments().addAttachment(key, value);
+ ctx.getPredeterminedManagedObjects().addAttachment(key, value);
}
}
}
More information about the jboss-cvs-commits
mailing list