You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2009/08/29 02:51:37 UTC
svn commit: r809078 [11/12] - in /geronimo/sandbox/djencks/osgi/framework:
./ assemblies/ assemblies/geronimo-framework/ buildsupport/
buildsupport/buildsupport-maven-plugin/ buildsupport/car-maven-plugin/
buildsupport/car-maven-plugin/src/main/java/or...
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/JavaBeanXmlAttributeEditorTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/JavaBeanXmlAttributeEditorTest.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/JavaBeanXmlAttributeEditorTest.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/JavaBeanXmlAttributeEditorTest.java Sat Aug 29 00:51:12 2009
@@ -19,11 +19,17 @@
package org.apache.geronimo.deployment.service;
+import java.util.HashMap;
+
import org.apache.geronimo.deployment.javabean.xbeans.BeanPropertyType;
import org.apache.geronimo.deployment.javabean.xbeans.JavabeanType;
import org.apache.geronimo.deployment.javabean.xbeans.PropertyType;
import org.apache.geronimo.crypto.Encryption;
import org.apache.geronimo.crypto.EncryptionManager;
+import org.apache.geronimo.kernel.osgi.MockBundleContext;
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.kernel.config.ConfigurationData;
+import org.osgi.framework.BundleContext;
import com.agical.rmock.extension.junit.RMockTestCase;
@@ -33,11 +39,12 @@
*/
public class JavaBeanXmlAttributeEditorTest extends RMockTestCase {
+ private BundleContext bundleContext = new MockBundleContext(getClass().getClassLoader(), "", new HashMap<Artifact, ConfigurationData>(), null);
private JavaBeanXmlAttributeEditor editor;
@Override
protected void setUp() throws Exception {
- editor = new JavaBeanXmlAttributeEditor(DummyJavaBean.class);
+ editor = new JavaBeanXmlAttributeEditor(DummyJavaBean.class, bundleContext.getBundle());
}
public void testPrimitives() throws Exception {
@@ -102,7 +109,7 @@
String prefix = "{Mock}";
EncryptionManager.setEncryptionPrefix(prefix, encryption);
- JavaBeanXmlAttributeEditor editor = new JavaBeanXmlAttributeEditor(DummyJavaBean.class);
+ JavaBeanXmlAttributeEditor editor = new JavaBeanXmlAttributeEditor(DummyJavaBean.class, bundleContext.getBundle());
DummyJavaBean bean = new DummyJavaBean();
bean.setEncryptOnPersist("encryptOnPersist");
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/ServiceConfigBuilderTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/ServiceConfigBuilderTest.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/ServiceConfigBuilderTest.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/java/org/apache/geronimo/deployment/service/ServiceConfigBuilderTest.java Sat Aug 29 00:51:12 2009
@@ -21,7 +21,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Set;
-import java.util.HashSet;
import java.util.Map;
import java.util.HashMap;
import java.util.jar.JarFile;
@@ -41,9 +40,11 @@
import org.apache.geronimo.gbean.ReferenceCollectionListener;
import org.apache.geronimo.kernel.Jsr77Naming;
import org.apache.geronimo.kernel.Naming;
+import org.apache.geronimo.kernel.osgi.MockBundleContext;
import org.apache.geronimo.kernel.config.ConfigurationManager;
import org.apache.geronimo.kernel.config.ConfigurationModuleType;
import org.apache.geronimo.kernel.config.SimpleConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationData;
import org.apache.geronimo.kernel.mock.MockRepository;
import org.apache.geronimo.kernel.repository.ArtifactManager;
import org.apache.geronimo.kernel.repository.ArtifactResolver;
@@ -53,12 +54,16 @@
import org.apache.geronimo.kernel.repository.ListableRepository;
import org.apache.geronimo.kernel.repository.Artifact;
import org.apache.geronimo.kernel.repository.Repository;
+import org.osgi.framework.BundleContext;
/**
* @version $Rev$ $Date$
*/
public class ServiceConfigBuilderTest extends TestCase {
+ private Map<String, Artifact> locations = new HashMap<String, Artifact>();
+ private MockBundleContext bundleContext = new MockBundleContext(getClass().getClassLoader(), "", new HashMap<Artifact, ConfigurationData>(), locations);
+
private Environment parentEnvironment = new Environment();
public void testNonService() throws Exception {
@@ -66,7 +71,7 @@
File file = new File(url.getPath());
JarFile jar = new JarFile(file);
assertTrue(file.exists());
- ServiceConfigBuilder builder = new ServiceConfigBuilder(parentEnvironment, null, new Jsr77Naming());
+ ServiceConfigBuilder builder = new ServiceConfigBuilder(parentEnvironment, null, new Jsr77Naming(), bundleContext);
assertNull(builder.getDeploymentPlan(null, jar, new ModuleIDBuilder()));
jar.close();
}
@@ -93,6 +98,7 @@
Environment environment = EnvironmentBuilder.buildEnvironment(plan.getEnvironment());
Map<Artifact, File> repo = new HashMap<Artifact, File>();
File file = new File(plan1.getFile());
+ locations.put(file.getAbsolutePath(), environment.getConfigId());
repo.put(Artifact.create("geronimo/foo1/DEV/jar"), file);
repo.put(Artifact.create("geronimo/foo2/DEV/jar"), file);
repo.put(Artifact.create("geronimo/foo3/DEV/car"), file);
@@ -101,9 +107,10 @@
ListableRepository mockRepository = new MockRepository(repo);
ArtifactManager artifactManager = new DefaultArtifactManager();
ArtifactResolver artifactResolver = new DefaultArtifactResolver(artifactManager, mockRepository);
- ConfigurationManager configurationManager = new SimpleConfigurationManager(Collections.EMPTY_SET, artifactResolver, Collections.EMPTY_SET);
+ ConfigurationManager configurationManager = new SimpleConfigurationManager(Collections.EMPTY_SET, artifactResolver, Collections.EMPTY_SET, bundleContext);
+ bundleContext.setConfigurationManager(configurationManager);
AbstractName moduleName = naming.createRootName(environment.getConfigId(), "foo", "bar");
- DeploymentContext context = new DeploymentContext(outFile, null, environment, moduleName, ConfigurationModuleType.CAR, naming, configurationManager, Collections.<Repository>singleton(mockRepository));
+ DeploymentContext context = new DeploymentContext(outFile, null, environment, moduleName, ConfigurationModuleType.CAR, naming, configurationManager, Collections.<Repository>singleton(mockRepository), bundleContext);
context.initializeConfiguration();
gbeanBuilder.build(plan, context, context);
Set gbeanNames = context.getGBeanNames();
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/resources/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/resources/services/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/resources/services/service3/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/resources/services/service3/META-INF/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-service-builder/src/test/resources/services/service3/classes/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -1,10 +1,9 @@
+.*
*.iws
*.ipr
*.iml
-.classpath
-.project
-.settings
*.log
junit*.properties
+maven-eclipse.xml
target
bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/pom.xml?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/pom.xml (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/pom.xml Sat Aug 29 00:51:12 2009
@@ -25,10 +25,11 @@
<parent>
<groupId>org.apache.geronimo.framework</groupId>
<artifactId>modules</artifactId>
- <version>2.2-SNAPSHOT</version>
+ <version>3.0-SNAPSHOT</version>
</parent>
<artifactId>geronimo-system</artifactId>
+ <packaging>bundle</packaging>
<name>Geronimo Framework, Modules :: System</name>
<dependencies>
@@ -83,8 +84,8 @@
<!-- plugin management -->
<dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jaxb_2.1_spec</artifactId>
</dependency>
<dependency>
@@ -150,19 +151,17 @@
<configuration>
<tasks>
<tstamp>
- <format property="build.year" pattern="yyyy"/>
+ <format property="build.year" pattern="yyyy" />
</tstamp>
- <mkdir dir="${project.build.outputDirectory}/org/apache/geronimo/system/serverinfo"/>
+ <mkdir dir="${project.build.outputDirectory}/org/apache/geronimo/system/serverinfo" />
+
+ <propertyfile file="${project.build.outputDirectory}/org/apache/geronimo/system/serverinfo/geronimo-version.properties" comment="Geronimo version information (generated, do not modify)">
- <propertyfile
- file="${project.build.outputDirectory}/org/apache/geronimo/system/serverinfo/geronimo-version.properties"
- comment="Geronimo version information (generated, do not modify)">
-
- <entry key="version" value="${version}"/>
- <entry key="build.date" type="date" value="now" pattern="yyyy.MM.dd"/>
- <entry key="build.time" type="date" value="now" pattern="HH:mm:ss.SSSZ"/>
- <entry key="copyright" value="Copyright (C) 2003-${build.year}, The Apache Software Foundation"/>
+ <entry key="version" value="${version}" />
+ <entry key="build.date" type="date" value="now" pattern="yyyy.MM.dd" />
+ <entry key="build.time" type="date" value="now" pattern="HH:mm:ss.SSSZ" />
+ <entry key="copyright" value="Copyright (C) 2003-${build.year}, The Apache Software Foundation" />
</propertyfile>
</tasks>
</configuration>
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/ExecutableConfigurationUtil.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/ExecutableConfigurationUtil.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/ExecutableConfigurationUtil.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/ExecutableConfigurationUtil.java Sat Aug 29 00:51:12 2009
@@ -32,12 +32,19 @@
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.List;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
import java.util.zip.ZipEntry;
import org.apache.geronimo.kernel.config.ConfigurationData;
import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.config.InvalidConfigException;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GAttributeInfo;
+import org.apache.geronimo.gbean.GReferenceInfo;
/**
* @version $Rev$ $Date$
@@ -46,8 +53,11 @@
private static final String META_INF = "META-INF";
private static final String CONFIG_SER = "config.ser";
private static final String CONFIG_INFO = "config.info";
+ //hopefully temporary hack
+ private static final String IMPORT_PACKAGES = "imports.txt";
private static final String META_INF_STARTUP_JAR = META_INF + "/startup-jar";
private static final String META_INF_CONFIG_SER = META_INF + "/" + CONFIG_SER;
+ private static final String META_INF_IMPORT_PACKAGES = META_INF + "/" + IMPORT_PACKAGES;
private static final String META_INF_CONFIG_SER_SHA1 = META_INF_CONFIG_SER + ".sha1";
private static final String META_INF_CONFIG_INFO = META_INF + "/" + CONFIG_INFO;
@@ -113,6 +123,18 @@
}
public static void writeConfiguration(ConfigurationData configurationData, JarOutputStream out) throws IOException {
+ out.putNextEntry(new ZipEntry(META_INF_IMPORT_PACKAGES));
+ try {
+ OutputStreamWriter writer = new OutputStreamWriter(out);
+ List<GBeanData> gbeans = configurationData.getGbeanState().getGBeans(null);
+ String imports = getImportString(gbeans);
+ writer.append(imports);
+ } catch (InvalidConfigException e) {
+ throw (IOException)new IOException("Could not get gbean datas").initCause(e);
+ } finally {
+ out.closeEntry();
+ }
+
// save the persisted form in the source directory
out.putNextEntry(new ZipEntry(META_INF_CONFIG_SER));
ConfigurationStoreUtil.ChecksumOutputStream sumOut = null;
@@ -148,6 +170,21 @@
// save the persisted form in the source directory
File metaInf = new File(source, META_INF);
metaInf.mkdirs();
+
+ PrintWriter writer = null;
+
+ try {
+ writer = new PrintWriter(new FileWriter(new File(metaInf, IMPORT_PACKAGES)));
+ List<GBeanData> gbeans = configurationData.getGbeanState().getGBeans(null);
+ String imports = getImportString(gbeans);
+ writer.append(imports);
+ } catch (InvalidConfigException e) {
+ throw (IOException)new IOException("Could not get gbean datas").initCause(e);
+ } finally {
+ flush(writer);
+ close(writer);
+ }
+
File configSer = new File(metaInf, CONFIG_SER);
OutputStream out = new FileOutputStream(configSer);
@@ -162,7 +199,6 @@
ConfigurationStoreUtil.writeChecksumFor(configSer);
// write the info file
- PrintWriter writer = null;
try {
writer = new PrintWriter(new FileWriter(new File(metaInf, CONFIG_INFO)));
ConfigurationUtil.writeConfigInfo(writer, configurationData);
@@ -170,6 +206,49 @@
flush(writer);
close(writer);
}
+
+ }
+
+ public static String getImportString(List<GBeanData> gbeans) {
+ LinkedHashSet<String> imports = getImports(gbeans);
+ StringBuilder builder = new StringBuilder();
+ for (String importPackage: imports) {
+ if (builder.length() > 0) {
+ builder.append(",");
+ }
+ builder.append(importPackage);
+ }
+ return builder.toString();
+ }
+
+ public static LinkedHashSet<String> getImports(List<GBeanData> gbeans) {
+ LinkedHashSet<String> imports = new LinkedHashSet<String>();
+ for (GBeanData data: gbeans) {
+ GBeanInfo info = data.getGBeanInfo();
+ addImport(imports, info.getClassName());
+ for (GAttributeInfo attInfo: info.getAttributes()) {
+ addImport(imports, attInfo.getType());
+ }
+ for (GReferenceInfo refInfo: info.getReferences()) {
+ addImport(imports, refInfo.getReferenceType());
+ }
+ }
+ return imports;
+ }
+
+ private static void addImport(LinkedHashSet<String> imports, String className) {
+ int pos = className.lastIndexOf('.');
+ if (pos < 0 ) return;
+ int count = 0;
+ while (className.charAt(count) == '[') {
+ count++;
+ }
+ if (className.charAt(count) == 'L') {
+ count++;
+ }
+ className = className.substring(count, pos);
+ if (className.startsWith("java.")) return;
+ imports.add(className);
}
private static Collection listRecursiveFiles(File file) {
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/GBeanOverride.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/GBeanOverride.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/GBeanOverride.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/GBeanOverride.java Sat Aug 29 00:51:12 2009
@@ -32,9 +32,6 @@
import javax.xml.bind.JAXBException;
import javax.xml.stream.XMLStreamException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.geronimo.common.propertyeditor.PropertyEditors;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.gbean.AbstractNameQuery;
@@ -51,7 +48,9 @@
import org.apache.geronimo.system.plugin.model.AttributeType;
import org.apache.geronimo.system.plugin.model.GbeanType;
import org.apache.geronimo.system.plugin.model.ReferenceType;
-import org.apache.geronimo.crypto.EncryptionManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.osgi.framework.Bundle;
/**
* @version $Rev$ $Date$
@@ -64,6 +63,7 @@
private final Object name;
private String comment;
private boolean load;
+ //Note that encrypted attributes are stored encrypted in this map.
private final Map<String, String> attributes = new LinkedHashMap<String, String>();
private final Map<String, String> propertyEditors = new HashMap<String, String>();
private final Map<String, ReferencePatterns> references = new LinkedHashMap<String, ReferencePatterns>();
@@ -126,7 +126,7 @@
return buf.toString();
}
- public GBeanOverride(GBeanData gbeanData, JexlExpressionParser expressionParser, ClassLoader classLoader) throws InvalidAttributeException {
+ public GBeanOverride(GBeanData gbeanData, JexlExpressionParser expressionParser, Bundle bundle) throws InvalidAttributeException {
GBeanInfo gbeanInfo = gbeanData.getGBeanInfo();
this.gbeanInfo = gbeanInfo.getSourceClass();
if (this.gbeanInfo == null) {
@@ -136,15 +136,15 @@
load = true;
// set attributes
- for (Object o : gbeanData.getAttributes().entrySet()) {
- Map.Entry entry = (Map.Entry) o;
- String attributeName = (String) entry.getKey();
+ for (Map.Entry<String, Object> entry : gbeanData.getAttributes().entrySet()) {
+ String attributeName = entry.getKey();
GAttributeInfo attributeInfo = gbeanInfo.getAttribute(attributeName);
if (attributeInfo == null) {
throw new InvalidAttributeException("No attribute: " + attributeName + " for gbean: " + gbeanData.getAbstractName());
}
+ // TODO: shouldn't we only save manageable attributes here?
Object attributeValue = entry.getValue();
- setAttribute(attributeName, attributeValue, attributeInfo.getType(), classLoader);
+ setAttribute(attributeInfo, attributeValue, bundle);
}
// references can be coppied in blind
@@ -197,8 +197,7 @@
if (value == null || value.length() == 0) {
setClearAttribute(attr.getName());
} else {
- String truevalue = (String) EncryptionManager.decrypt(value);
- setAttribute(attr.getName(), truevalue);
+ setAttribute(attr.getName(), value);
}
}
} else if (o instanceof ReferenceType) {
@@ -312,12 +311,22 @@
references.remove(referenceName);
}
- public void setAttribute(String attributeName, Object attributeValue, String attributeType, ClassLoader classLoader) throws InvalidAttributeException {
- String stringValue = getAsText(attributeName, attributeValue, attributeType, classLoader);
- setAttribute(attributeName, stringValue);
+ public void setAttribute(GAttributeInfo attrInfo, Object attributeValue,
+ Bundle bundle) throws InvalidAttributeException {
+ String stringValue = getAsText(attrInfo.getName(), attributeValue, attrInfo.getType(), bundle);
+ stringValue = (String) attrInfo.getEncryptedSetting().encrypt(stringValue);
+ setAttribute(attrInfo.getName(), stringValue);
}
- public void setAttribute(String attributeName, String attributeValue) {
+ /**
+ * This method should be discouraged for usage outside in future, as it does
+ * not pass in encryption meta-information about the attribute being set.
+ *
+ * Use setAttribute(GAttributeInfo attrInfo, Object attributeValue,
+ * ClassLoader classLoader) instead.
+ *
+ */
+ private void setAttribute(String attributeName, String attributeValue) {
if (attributeValue == null || attributeValue.length() == 0) {
setClearAttribute(attributeName);
} else {
@@ -341,7 +350,7 @@
clearReferences.remove(name);
}
- public boolean applyOverrides(GBeanData data, Artifact configName, AbstractName gbeanName, ClassLoader classLoader) throws InvalidConfigException {
+ public boolean applyOverrides(GBeanData data, Artifact configName, AbstractName gbeanName, Bundle bundle) throws InvalidConfigException {
if (!isLoad()) {
return false;
}
@@ -356,8 +365,18 @@
throw new InvalidConfigException("No attribute: " + attributeName + " for gbean: " + data.getAbstractName());
}
String valueString = entry.getValue();
- Object value = getValue(attributeInfo, valueString, configName, gbeanName, classLoader);
+ Object value = getValue(attributeInfo, valueString, configName, gbeanName, bundle);
data.setAttribute(attributeName, value);
+
+ //encrypt any encryptable attributes set to plaintext by users
+ if (valueString != null) {
+ if (valueString.equals(attributeInfo.getEncryptedSetting().decrypt(valueString))) {
+ String encrypted = (String) attributeInfo.getEncryptedSetting().encrypt(valueString);
+ if (!encrypted.equals(valueString)) {
+ entry.setValue(encrypted);
+ }
+ }
+ }
}
//Clear attributes
@@ -391,23 +410,24 @@
return true;
}
- private synchronized Object getValue(GAttributeInfo attribute, String value, Artifact configurationName, AbstractName gbeanName, ClassLoader classLoader) {
+ private synchronized Object getValue(GAttributeInfo attribute, String value, Artifact configurationName, AbstractName gbeanName, Bundle bundle) {
if (value == null) {
return null;
}
+ value = (String) attribute.getEncryptedSetting().decrypt(value);
value = substituteVariables(attribute.getName(), value);
- PropertyEditor editor = loadPropertyEditor(attribute, classLoader);
+ PropertyEditor editor = loadPropertyEditor(attribute, bundle);
editor.setAsText(value);
log.debug("Setting value for " + configurationName + "/" + gbeanName + "/" + attribute.getName() + " to value " + value);
return editor.getValue();
}
- protected PropertyEditor loadPropertyEditor(GAttributeInfo attribute, ClassLoader classLoader) {
+ protected PropertyEditor loadPropertyEditor(GAttributeInfo attribute, Bundle bundle) {
String propertyEditor = propertyEditors.get(attribute.getName());
if (null == propertyEditor) {
PropertyEditor editor;
try {
- editor = PropertyEditors.findEditor(attribute.getType(), classLoader);
+ editor = PropertyEditors.findEditor(attribute.getType(), bundle);
} catch (ClassNotFoundException e) {
throw new IllegalStateException("Unable to load property editor for attribute type: " + attribute.getType());
}
@@ -417,7 +437,7 @@
return editor;
} else {
try {
- Class propertyEditorClass = classLoader.loadClass(propertyEditor);
+ Class propertyEditorClass = bundle.loadClass(propertyEditor);
return (PropertyEditor) propertyEditorClass.newInstance();
} catch (Exception ex) {
throw new IllegalStateException("Cannot load property editor [" + propertyEditor + "]", ex);
@@ -468,10 +488,6 @@
} else {
nullAttributes.remove(name);
clearAttributes.remove(name);
-
- if (name.toLowerCase().indexOf("password") > -1) {
- value = EncryptionManager.encrypt(value);
- }
/**
* if there was a value such as jdbc url with & then when that value was oulled
* from the config.xml the & would have been replaced/converted to '&', we need to check
@@ -564,13 +580,13 @@
return gbean;
}
- protected String getAsText(String attributeName, Object value, String type, ClassLoader classLoader) throws InvalidAttributeException {
+ protected String getAsText(String attributeName, Object value, String type, Bundle bundle) throws InvalidAttributeException {
try {
if (null == value || value instanceof String) {
return (String) value;
}
- Class typeClass = ClassLoading.loadClass(type, classLoader);
+ Class typeClass = ClassLoading.loadClass(type, bundle);
PropertyEditor editor = PropertyEditors.findEditor(value.getClass());
if (null == editor) {
editor = PropertyEditors.findEditor(typeClass);
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java Sat Aug 29 00:51:12 2009
@@ -64,6 +64,7 @@
import org.apache.geronimo.system.plugin.model.GbeanType;
import org.apache.geronimo.system.serverinfo.ServerInfo;
import org.xml.sax.SAXException;
+import org.osgi.framework.Bundle;
/**
* Stores managed attributes in an XML file on the local filesystem.
@@ -148,7 +149,7 @@
return prefix;
}
- public synchronized Collection applyOverrides(Artifact configName, Collection<GBeanData> untypedGbeanDatas, ClassLoader classLoader) throws InvalidConfigException {
+ public synchronized Collection<GBeanData> applyOverrides(Artifact configName, Collection<GBeanData> untypedGbeanDatas, Bundle bundle) throws InvalidConfigException {
// clone the datas since we will be modifying this collection
Collection<GBeanData> gbeanDatas = new ArrayList<GBeanData>(untypedGbeanDatas);
@@ -184,7 +185,7 @@
message.append(" gbeanName=").append(name);
throw new InvalidConfigException(message.toString());
}
- GBeanInfo gbeanInfo = infoFactory.getGBeanInfo(gbean.getGBeanInfo(), classLoader);
+ GBeanInfo gbeanInfo = infoFactory.getGBeanInfo(gbean.getGBeanInfo(), bundle);
AbstractName abstractName = (AbstractName) name;
GBeanData gBeanData = new GBeanData(abstractName, gbeanInfo);
gbeanDatas.add(gBeanData);
@@ -194,7 +195,7 @@
// set the attributes
for (Iterator iterator = gbeanDatas.iterator(); iterator.hasNext();) {
GBeanData data = (GBeanData) iterator.next();
- boolean load = setAttributes(data, configuration, configName, classLoader);
+ boolean load = setAttributes(data, configuration, configName, bundle);
if (!load) {
iterator.remove();
}
@@ -208,12 +209,12 @@
* @param data GBeanData we are going to override attributes on
* @param configuration the module override the gbean relates to
* @param configName name of the module (why can't this be determined from the configuration?)
- * @param classLoader ClassLoader to use for property objects/PropertyEditors
+ * @param bundle
* @return true if the gbean should be loaded, false otherwise.
* @throws org.apache.geronimo.kernel.config.InvalidConfigException
* if we cannot update the gbeanData
*/
- private synchronized boolean setAttributes(GBeanData data, ConfigurationOverride configuration, Artifact configName, ClassLoader classLoader) throws InvalidConfigException {
+ private synchronized boolean setAttributes(GBeanData data, ConfigurationOverride configuration, Artifact configName, Bundle bundle) throws InvalidConfigException {
AbstractName gbeanName = data.getAbstractName();
GBeanOverride gbean = configuration.getGBean(gbeanName);
if (gbean == null) {
@@ -225,7 +226,7 @@
return true;
}
- return gbean.applyOverrides(data, configName, gbeanName, classLoader);
+ return gbean.applyOverrides(data, configName, gbeanName, bundle);
}
public void setModuleGBeans(Artifact moduleName, List<GbeanType> gbeans, boolean load, String condition) throws InvalidGBeanException {
@@ -251,6 +252,10 @@
return serverOverride.getConfiguration(artifact) != null;
}
+ public String substitute(String in) {
+ return expressionParser.parse(in);
+ }
+
public void addConfigSubstitutions(Properties properties) {
localConfigSubstitutions.putAll(properties);
Map<String, Object> configSubstutions = loadAllConfigSubstitutions(localConfigSubstitutions, prefix);
@@ -258,7 +263,7 @@
expressionParser.setVariables(configSubstutions);
}
- public synchronized void setValue(Artifact configurationName, AbstractName gbeanName, GAttributeInfo attribute, Object value, ClassLoader classLoader) {
+ public synchronized void setValue(Artifact configurationName, AbstractName gbeanName, GAttributeInfo attribute, Object value, Bundle bundle) {
if (readOnly) {
return;
}
@@ -273,7 +278,7 @@
}
try {
- gbean.setAttribute(attribute.getName(), value, attribute.getType(), classLoader);
+ gbean.setAttribute(attribute, value, bundle);
attributeChanged();
} catch (InvalidAttributeException e) {
// attribute can not be represented as a string
@@ -320,7 +325,7 @@
attributeChanged();
}
- public void addGBean(Artifact configurationName, GBeanData gbeanData, ClassLoader classLoader) {
+ public void addGBean(Artifact configurationName, GBeanData gbeanData, Bundle bundle) {
if (readOnly) {
return;
}
@@ -330,7 +335,7 @@
return;
}
try {
- GBeanOverride gbean = new GBeanOverride(gbeanData, expressionParser, classLoader);
+ GBeanOverride gbean = new GBeanOverride(gbeanData, expressionParser, bundle);
configuration.addGBean(gbean);
attributeChanged();
} catch (InvalidAttributeException e) {
@@ -406,6 +411,13 @@
}
}
+ void write(Writer writer) throws XMLStreamException, JAXBException,
+ IOException {
+ AttributesType attributes = serverOverride.writeXml();
+ AttributesXmlUtil.writeAttributes(attributes, writer);
+ writer.flush();
+ }
+
private static void saveXmlToFile(File file, ServerOverride serverOverride) {
try {
Writer fileOut = new FileWriter(file);
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/PluginAttributeStore.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/PluginAttributeStore.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/PluginAttributeStore.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/PluginAttributeStore.java Sat Aug 29 00:51:12 2009
@@ -41,4 +41,6 @@
void addConfigSubstitutions(Properties properties);
boolean isModuleInstalled(Artifact artifact);
+
+ String substitute(final String in);
}
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/cli/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JexlExpressionParser.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JexlExpressionParser.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JexlExpressionParser.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/condition/JexlExpressionParser.java Sat Aug 29 00:51:12 2009
@@ -127,7 +127,7 @@
log.trace("Parsing input: {}", input);
- StringBuffer buff = new StringBuffer();
+ StringBuilder buff = new StringBuilder();
int cur = 0;
int prefixLoc;
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/JMXProxyMethodInterceptor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/JMXProxyMethodInterceptor.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/JMXProxyMethodInterceptor.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/JMXProxyMethodInterceptor.java Sat Aug 29 00:51:12 2009
@@ -94,8 +94,7 @@
FastClass fastClass = FastClass.create(proxyType);
ProxyInvoker[] invokers = new ProxyInvoker[fastClass.getMaxIndex() + 1];
Method[] methods = proxyType.getMethods();
- for (int i = 0; i < methods.length; i++) {
- Method method = methods[i];
+ for (Method method : methods) {
int interfaceIndex = getSuperIndex(proxyType, method);
if (interfaceIndex >= 0) {
invokers[interfaceIndex] = createProxyInvoker(kernel, method);
@@ -104,17 +103,17 @@
// handle equals, hashCode and toString directly here
try {
- invokers[getSuperIndex(proxyType, proxyType.getMethod("equals", new Class[]{Object.class}))] = new EqualsInvoke(kernel);
- invokers[getSuperIndex(proxyType, proxyType.getMethod("hashCode", null))] = new HashCodeInvoke();
- invokers[getSuperIndex(proxyType, proxyType.getMethod("toString", null))] = new ToStringInvoke(proxyType.getName());
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("equals", Object.class))] = new EqualsInvoke(kernel);
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("hashCode", (Class[])null))] = new HashCodeInvoke();
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("toString", (Class[])null))] = new ToStringInvoke(proxyType.getName());
if(GeronimoManagedBean.class.isAssignableFrom(proxyType)) {
- invokers[getSuperIndex(proxyType, proxyType.getMethod("getState", null))] = new GetStateInvoke(kernel);
- invokers[getSuperIndex(proxyType, proxyType.getMethod("getStateInstance", null))] = new GetStateInstanceInvoke(kernel);
- invokers[getSuperIndex(proxyType, proxyType.getMethod("start", null))] = new StartInvoke(kernel);
- invokers[getSuperIndex(proxyType, proxyType.getMethod("startRecursive", null))] = new StartRecursiveInvoke(kernel);
- invokers[getSuperIndex(proxyType, proxyType.getMethod("stop", null))] = new StopInvoke(kernel);
- invokers[getSuperIndex(proxyType, proxyType.getMethod("getStartTime", null))] = new GetStartTimeInvoke(kernel);
- invokers[getSuperIndex(proxyType, proxyType.getMethod("getObjectName", null))] = new GetObjectNameInvoke();
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("getState", (Class[])null))] = new GetStateInvoke(kernel);
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("getStateInstance", (Class[])null))] = new GetStateInstanceInvoke(kernel);
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("start", (Class[])null))] = new StartInvoke(kernel);
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("startRecursive", (Class[])null))] = new StartRecursiveInvoke(kernel);
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("stop", (Class[])null))] = new StopInvoke(kernel);
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("getStartTime", (Class[])null))] = new GetStartTimeInvoke(kernel);
+ invokers[getSuperIndex(proxyType, proxyType.getMethod("getObjectName", (Class[])null))] = new GetObjectNameInvoke();
}
} catch (Exception e) {
// this can not happen... all classes must implement equals, hashCode and toString
@@ -172,7 +171,7 @@
static final class HashCodeInvoke implements ProxyInvoker {
public Object invoke(AbstractName abstractName, Object[] arguments) throws Throwable {
- return new Integer(abstractName.hashCode());
+ return abstractName.hashCode();
}
}
@@ -185,7 +184,7 @@
public Object invoke(AbstractName abstractName, Object[] arguments) throws Throwable {
AbstractName proxyTarget = kernel.getAbstractNameFor(arguments[0]);
- return Boolean.valueOf(abstractName.equals(proxyTarget));
+ return abstractName.equals(proxyTarget);
}
}
@@ -209,7 +208,7 @@
}
public Object invoke(AbstractName abstractName, Object[] arguments) throws Throwable {
- return new Integer(kernel.getGBeanState(abstractName));
+ return kernel.getGBeanState(abstractName);
}
}
@@ -259,7 +258,7 @@
}
public Object invoke(AbstractName abstractName, Object[] arguments) throws Throwable {
- return new Long(kernel.getGBeanStartTime(abstractName));
+ return kernel.getGBeanStartTime(abstractName);
}
}
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelDelegate.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelDelegate.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelDelegate.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelDelegate.java Sat Aug 29 00:51:12 2009
@@ -39,6 +39,8 @@
import org.apache.geronimo.kernel.Naming;
import org.apache.geronimo.kernel.lifecycle.LifecycleMonitor;
import org.apache.geronimo.kernel.proxy.ProxyManager;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
/**
* @version $Rev$ $Date$
@@ -120,9 +122,9 @@
}
}
- public void loadGBean(GBeanData gbeanData, ClassLoader classLoader) throws GBeanAlreadyExistsException {
+ public void loadGBean(GBeanData gbeanData, BundleContext bundleContext) throws GBeanAlreadyExistsException {
try {
- invokeKernel("loadGBean", new Object[] {gbeanData, classLoader}, new String[] {GBeanData.class.getName(), ClassLoader.class.getName()});
+ invokeKernel("loadGBean", new Object[] {gbeanData, bundleContext}, new String[] {GBeanData.class.getName(), ClassLoader.class.getName()});
} catch (GBeanAlreadyExistsException e) {
throw e;
} catch (RuntimeException e) {
@@ -709,9 +711,9 @@
}
}
- public ClassLoader getClassLoaderFor(AbstractName name) throws GBeanNotFoundException {
+ public Bundle getBundleFor(AbstractName name) throws GBeanNotFoundException {
try {
- return (ClassLoader) invokeKernel("getClassLoaderFor", new Object[] {name}, new String[] {AbstractName.class.getName()});
+ return (Bundle) invokeKernel("getBundleFor", new Object[] {name}, new String[] {AbstractName.class.getName()});
} catch (GBeanNotFoundException e) {
throw e;
} catch (RuntimeException e) {
@@ -721,9 +723,9 @@
}
}
- public ClassLoader getClassLoaderFor(String shortName) throws GBeanNotFoundException {
+ public Bundle getBundleFor(String shortName) throws GBeanNotFoundException {
try {
- return (ClassLoader) invokeKernel("getClassLoaderFor", new Object[] {shortName}, new String[] {String.class.getName()});
+ return (Bundle) invokeKernel("getBundleFor", new Object[] {shortName}, new String[] {String.class.getName()});
} catch (GBeanNotFoundException e) {
throw e;
} catch (RuntimeException e) {
@@ -733,9 +735,9 @@
}
}
- public ClassLoader getClassLoaderFor(Class type) throws GBeanNotFoundException {
+ public Bundle getBundleFor(Class type) throws GBeanNotFoundException {
try {
- return (ClassLoader) invokeKernel("getClassLoaderFor", new Object[] {type}, new String[] {Class.class.getName()});
+ return (Bundle) invokeKernel("getBundleFor", new Object[] {type}, new String[] {Class.class.getName()});
} catch (GBeanNotFoundException e) {
throw e;
} catch (RuntimeException e) {
@@ -745,9 +747,9 @@
}
}
- public ClassLoader getClassLoaderFor(String shortName, Class type) throws GBeanNotFoundException {
+ public Bundle getBundleFor(String shortName, Class type) throws GBeanNotFoundException {
try {
- return (ClassLoader) invokeKernel("getClassLoaderFor", new Object[] {shortName, type}, new String[] {String.class.getName(), Class.class.getName()});
+ return (Bundle) invokeKernel("getBundleFor", new Object[] {shortName, type}, new String[] {String.class.getName(), Class.class.getName()});
} catch (GBeanNotFoundException e) {
throw e;
} catch (RuntimeException e) {
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelMBeanServer.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelMBeanServer.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelMBeanServer.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/jmx/KernelMBeanServer.java Sat Aug 29 00:51:12 2009
@@ -52,6 +52,7 @@
import org.apache.geronimo.kernel.NoSuchAttributeException;
import org.apache.geronimo.kernel.NoSuchOperationException;
import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.osgi.BundleClassLoader;
import org.apache.geronimo.kernel.lifecycle.LifecycleAdapter;
/**
@@ -61,7 +62,7 @@
public class KernelMBeanServer implements MBeanServer {
private static final AbstractNameQuery ALL = new AbstractNameQuery(null, Collections.EMPTY_MAP, Collections.EMPTY_SET);
- private final HashMap objetNameToAbstractName = new HashMap();
+ private final HashMap<ObjectName, AbstractName> objetNameToAbstractName = new HashMap<ObjectName, AbstractName>();
private final Kernel kernel;
public KernelMBeanServer(Kernel kernel) {
@@ -71,15 +72,14 @@
public void doStart() {
kernel.getLifecycleMonitor().addLifecycleListener(new GBeanRegistrationListener(), ALL);
- Set allNames = kernel.listGBeans(ALL);
- for (Iterator iterator = allNames.iterator(); iterator.hasNext();) {
- AbstractName abstractName = (AbstractName) iterator.next();
+ Set<AbstractName> allNames = kernel.listGBeans(ALL);
+ for (AbstractName abstractName : allNames) {
register(abstractName);
}
}
public synchronized AbstractName getAbstractNameFor(ObjectName objectName) {
- return (AbstractName) objetNameToAbstractName.get(objectName);
+ return objetNameToAbstractName.get(objectName);
}
private synchronized void register(AbstractName abstractName) {
@@ -125,7 +125,7 @@
} catch (GBeanNotFoundException e) {
throw (InstanceNotFoundException)new InstanceNotFoundException(name.getCanonicalName()).initCause(e);
} catch (InternalKernelException e) {
- throw (MBeanException)new MBeanException(unwrapInternalKernelException(e));
+ throw new MBeanException(unwrapInternalKernelException(e));
} catch (Exception e) {
throw new MBeanException(e);
}
@@ -315,7 +315,7 @@
public ClassLoader getClassLoaderFor(ObjectName objectName) throws InstanceNotFoundException {
AbstractName abstractName = toAbstractName(objectName);
try {
- return kernel.getClassLoaderFor(abstractName);
+ return new BundleClassLoader(kernel.getBundleFor(abstractName));
} catch (GBeanNotFoundException e) {
throw (InstanceNotFoundException)new InstanceNotFoundException(objectName.getCanonicalName()).initCause(e);
}
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/jul/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/ApplicationLog4jConfigurationGBean.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/ApplicationLog4jConfigurationGBean.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/ApplicationLog4jConfigurationGBean.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/ApplicationLog4jConfigurationGBean.java Sat Aug 29 00:51:12 2009
@@ -30,7 +30,6 @@
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.system.serverinfo.ServerInfo;
-import org.apache.log4j.PropertyConfigurator;
/**
* @version $Rev$ $Date$
@@ -62,20 +61,25 @@
} finally {
in.close();
}
- //remove any global log4j configuration
- for (Iterator it = props.keySet().iterator(); it.hasNext(); ) {
- String key = (String) it.next();
- if (key.startsWith(CATEGORY_PREFIX)
- || key.startsWith(LOGGER_PREFIX)
- || key.startsWith(ADDITIVITY_PREFIX)
- || key.startsWith(APPENDER_PREFIX)
- || key.startsWith(RENDERER_PREFIX)) {
- continue;
+ try {
+ Class log4jConfigClass = classloader.loadClass("org.apache.log4j.PropertyConfigurator");
+ if (log4jConfigClass.getClassLoader() == ClassLoader.getSystemClassLoader()) {
+ //remove any global log4j configuration
+ for (Iterator it = props.keySet().iterator(); it.hasNext();) {
+ String key = (String) it.next();
+ if (key.startsWith(CATEGORY_PREFIX)
+ || key.startsWith(LOGGER_PREFIX)
+ || key.startsWith(ADDITIVITY_PREFIX)
+ || key.startsWith(APPENDER_PREFIX)
+ || key.startsWith(RENDERER_PREFIX)) {
+ continue;
+ }
+ it.remove();
+ }
}
- it.remove();
+ log4jConfigClass.getMethod("configure", Properties.class).invoke(null, props);
+ } catch (Exception e) {
}
-
- PropertyConfigurator.configure(props);
}
public static final GBeanInfo GBEAN_INFO;
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/Log4jService.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/Log4jService.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/Log4jService.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/Log4jService.java Sat Aug 29 00:51:12 2009
@@ -519,7 +519,7 @@
}
try {
- URLConfigurator.configure(file.toURL());
+ URLConfigurator.configure(file.toURI().toURL());
} catch (MalformedURLException e) {
e.printStackTrace();
}
@@ -575,6 +575,11 @@
timer.cancel();
timer = null;
}
+
+ log.info("Stopping Logging Service");
+ log.info("----------------------------------------------");
+
+ LogManager.shutdown();
}
public void doFail() {
@@ -664,10 +669,10 @@
infoFactory.addReference("ServerInfo", ServerInfo.class, "GBean");
- infoFactory.addOperation("reconfigure");
- infoFactory.addOperation("setLoggerLevel", new Class[]{String.class, String.class});
- infoFactory.addOperation("getLoggerLevel", new Class[]{String.class});
- infoFactory.addOperation("getLoggerEffectiveLevel", new Class[]{String.class});
+// infoFactory.addOperation("reconfigure");
+// infoFactory.addOperation("setLoggerLevel", new Class[]{String.class, String.class});
+// infoFactory.addOperation("getLoggerLevel", new Class[]{String.class});
+// infoFactory.addOperation("getLoggerEffectiveLevel", new Class[]{String.class});
infoFactory.addInterface(SystemLog.class);
infoFactory.setConstructor(new String[]{"configFileName", "refreshPeriodSeconds", "ServerInfo"});
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/logging/log4j/appender/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/CommandLine.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/CommandLine.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/CommandLine.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/CommandLine.java Sat Aug 29 00:51:12 2009
@@ -42,6 +42,7 @@
import org.apache.geronimo.kernel.repository.MissingDependencyException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.osgi.framework.BundleContext;
/**
* @version $Rev$ $Date$
@@ -124,11 +125,12 @@
}
protected void loadBootstrapConfiguration() throws Exception {
- ClassLoader classLoader = CommandLine.class.getClassLoader();
- InputStream in = classLoader.getResourceAsStream("META-INF/config.ser");
+// ClassLoader classLoader = CommandLine.class.getClassLoader();
+ BundleContext bundleContext = null;
+ InputStream in = bundleContext.getBundle().getResource("META-INF/config.ser").openStream();
try {
// load the configuration
- configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, in, classLoader);
+ configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, in, bundleContext);
} finally {
if (in != null) {
try {
@@ -141,22 +143,24 @@
}
protected Kernel getBootedKernel() throws Exception {
- kernel = KernelFactory.newInstance().createKernel("geronimo");
+ BundleContext bundleContext = null;
+ kernel = KernelFactory.newInstance(bundleContext).createKernel("geronimo");
kernel.boot();
return kernel;
}
protected void startKernel(Artifact moduleId) throws Exception {
getBootedKernel();
- ClassLoader classLoader = CommandLine.class.getClassLoader();
- for (Enumeration modules = classLoader.getResources("META-INF/config.ser"); modules.hasMoreElements(); ) {
+// ClassLoader classLoader = CommandLine.class.getClassLoader();
+ BundleContext bundleContext = null;
+ for (Enumeration modules = bundleContext.getBundle().getResources("META-INF/config.ser"); modules.hasMoreElements(); ) {
URL moduleDataURL = (URL) modules.nextElement();
InputStream in = moduleDataURL.openStream();
try {
ConfigurationData moduleData = ConfigurationUtil.readConfigurationData(in);
if (moduleId.matches(moduleData.getId())) {
// load the configuration
- configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, moduleData, classLoader);
+ configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, moduleData, bundleContext);
return;
}
} finally {
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/Daemon.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/Daemon.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/Daemon.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/main/Daemon.java Sat Aug 29 00:51:12 2009
@@ -24,6 +24,7 @@
import org.apache.geronimo.cli.daemon.DaemonCLParser;
import org.apache.geronimo.kernel.KernelFactory;
import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.osgi.framework.BundleContext;
/**
@@ -32,12 +33,14 @@
public class Daemon extends EmbeddedDaemon {
private Daemon() {
- super(KernelFactory.newInstance().createKernel("geronimo"));
+ //TODO osgi bundleContext == null
+ super(KernelFactory.newInstance(null).createKernel("geronimo"));
}
@Override
protected int initializeKernel() throws Exception {
ClassLoader classLoader = EmbeddedDaemon.class.getClassLoader();
+ BundleContext bundleContext = null;
// boot the kernel
try {
@@ -60,7 +63,7 @@
// load this configuration
InputStream in = classLoader.getResourceAsStream("META-INF/config.ser");
try {
- ConfigurationUtil.loadBootstrapConfiguration(kernel, in, classLoader);
+ ConfigurationUtil.loadBootstrapConfiguration(kernel, in, bundleContext);
} finally {
if (in != null) {
try {
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/properties/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/repository/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/resolver/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/serverinfo/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/sharedlib/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java Sat Aug 29 00:51:12 2009
@@ -63,7 +63,7 @@
if (!dir.isDirectory()) {
throw new IllegalArgumentException("Shared classes dir is not a directory: " + dir);
}
- URL location = dir.toURL();
+ URL location = dir.toURI().toURL();
if (!currentUrls.contains(location)) {
newUrls.add(location);
}
@@ -87,7 +87,7 @@
for (int j = 0; j < files.length; j++) {
File file = files[j];
if (file.canRead() && (file.getName().endsWith(".jar") || file.getName().endsWith(".zip"))) {
- URL location = file.toURL();
+ URL location = file.toURI().toURL();
if (!currentUrls.contains(location)) {
newUrls.add(location);
}
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/threads/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/url/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/main/xsd/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/geronimo/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/geronimo/system/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Propchange: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/geronimo/system/configuration/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Aug 29 00:51:12 2009
@@ -0,0 +1,9 @@
+.*
+*.iws
+*.ipr
+*.iml
+*.log
+junit*.properties
+maven-eclipse.xml
+target
+bin
Modified: geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/geronimo/system/configuration/GBeanOverrideTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/geronimo/system/configuration/GBeanOverrideTest.java?rev=809078&r1=809077&r2=809078&view=diff
==============================================================================
--- geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/geronimo/system/configuration/GBeanOverrideTest.java (original)
+++ geronimo/sandbox/djencks/osgi/framework/modules/geronimo-system/src/test/java/org/apache/geronimo/system/configuration/GBeanOverrideTest.java Sat Aug 29 00:51:12 2009
@@ -19,18 +19,23 @@
package org.apache.geronimo.system.configuration;
-import java.beans.PropertyEditorSupport;
-import java.net.URI;
-import java.util.Collection;
-import java.util.Collections;
-
import junit.framework.TestCase;
-
import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.ReferencePatterns;
+import org.apache.geronimo.gbean.GAttributeInfo;
+import org.apache.geronimo.gbean.annotation.AnnotationGBeanInfoFactory;
+import org.apache.geronimo.gbean.annotation.GBean;
import org.apache.geronimo.system.configuration.condition.JexlExpressionParser;
import org.apache.geronimo.system.plugin.model.AttributeType;
import org.apache.geronimo.system.plugin.model.GbeanType;
+import org.apache.geronimo.kernel.osgi.MockBundle;
+import org.osgi.framework.Bundle;
+
+import java.beans.PropertyEditorSupport;
+import java.net.URI;
+import java.util.Collection;
+import java.util.Collections;
/**
*
@@ -40,13 +45,26 @@
private GbeanType gbeanType;
private String attributeName;
+ private GBeanInfo gbeanInfo;
+ private GAttributeInfo beanInfo;
+ private GAttributeInfo serviceInfo;
+ private GAttributeInfo intInfo;
+ private GAttributeInfo collectionInfo;
+ private GAttributeInfo fooInfo;
+ private Bundle bundle = new MockBundle(getClass().getClassLoader(), null, 0L);
@Override
protected void setUp() throws Exception {
gbeanType = new GbeanType();
gbeanType.setName("name");
- attributeName = "attName";
+ attributeName = "bean";
+ gbeanInfo = new AnnotationGBeanInfoFactory().getGBeanInfo(TestGBean.class);
+ beanInfo = gbeanInfo.getAttribute(attributeName);
+ serviceInfo = gbeanInfo.getAttribute("service");
+ intInfo = gbeanInfo.getAttribute("intValue");
+ collectionInfo = gbeanInfo.getAttribute("collection");
+ fooInfo = gbeanInfo.getAttribute("foo");
}
public void testPropertyEditorIsCarriedByWriteXml() throws Exception {
@@ -65,7 +83,7 @@
public void testPropertyEditorIsUsedToGetTextValue() throws Exception {
GBeanOverride override = new GBeanOverride(gbeanType, new JexlExpressionParser());
- override.setAttribute(attributeName, new Bean(), Bean.class.getName(), getClass().getClassLoader());
+ override.setAttribute(beanInfo, new Bean(), bundle);
assertEquals("bean", override.getAttribute(attributeName));
@@ -77,7 +95,7 @@
public void testPropertyEditorIsDefinedWhenAttributeIsNotAPrimitiveAndItsTypeDoesNotEqualValueType() throws Exception {
GBeanOverride override = new GBeanOverride(gbeanType, new JexlExpressionParser());
- override.setAttribute(attributeName, new Bean(), Service.class.getName(), getClass().getClassLoader());
+ override.setAttribute(serviceInfo, new Bean(), bundle);
GbeanType copiedGBeanType = override.writeXml();
assertEquals(1, copiedGBeanType.getAttributeOrReference().size());
@@ -87,7 +105,7 @@
public void testPropertyEditorIsNotDefinedWhenAttributeTypeEqualsValueType() throws Exception {
GBeanOverride override = new GBeanOverride(gbeanType, new JexlExpressionParser());
- override.setAttribute(attributeName, new Bean(), Bean.class.getName(), getClass().getClassLoader());
+ override.setAttribute(beanInfo, new Bean(), bundle);
GbeanType copiedGBeanType = override.writeXml();
assertEquals(1, copiedGBeanType.getAttributeOrReference().size());
@@ -97,7 +115,7 @@
public void testPropertyEditorIsNotDefinedForPrimitives() throws Exception {
GBeanOverride override = new GBeanOverride(gbeanType, new JexlExpressionParser());
- override.setAttribute(attributeName, new Integer(1), int.class.getName(), getClass().getClassLoader());
+ override.setAttribute(intInfo, 1, bundle);
GbeanType copiedGBeanType = override.writeXml();
assertEquals(1, copiedGBeanType.getAttributeOrReference().size());
@@ -107,7 +125,7 @@
public void testPropertyEditorIsNotDefinedForCollectionSubClasses() throws Exception {
GBeanOverride override = new GBeanOverride(gbeanType, new JexlExpressionParser());
- override.setAttribute(attributeName, Collections.singleton("test"), Collection.class.getName(), getClass().getClassLoader());
+ override.setAttribute(collectionInfo, Collections.singleton("test"), bundle);
GbeanType copiedGBeanType = override.writeXml();
assertEquals(1, copiedGBeanType.getAttributeOrReference().size());
@@ -145,7 +163,7 @@
override = new GBeanOverride(gbeanType, new JexlExpressionParser());
override.setNullAttribute("foo");
override.setClearAttribute("foo");
- override.setAttribute("foo", "bar");
+ override.setAttribute(fooInfo, "bar", bundle);
override.writeXml();
assertFalse(override.isNullAttribute("foo"));
@@ -156,7 +174,7 @@
assertTrue(override.getAttributes().containsKey("foo"));
override = new GBeanOverride(gbeanType, new JexlExpressionParser());
- override.setAttribute("foo", "bar");
+ override.setAttribute(fooInfo, "bar", bundle);
override.setNullAttribute("foo");
override.setClearAttribute("foo");
override.writeXml();
@@ -170,7 +188,7 @@
override = new GBeanOverride(gbeanType, new JexlExpressionParser());
override.setClearAttribute("foo");
- override.setAttribute("foo", "bar");
+ override.setAttribute(fooInfo, "bar", bundle);
override.setNullAttribute("foo");
override.writeXml();
@@ -182,8 +200,8 @@
assertTrue(override.getNullAttributes().contains("foo"));
override = new GBeanOverride(gbeanType, new JexlExpressionParser());
- override.setAttribute("bar1", "foo");
- override.setAttribute("bar2", "foo");
+ override.setAttribute(gbeanInfo.getAttribute("bar1"), "foo", bundle);
+ override.setAttribute(gbeanInfo.getAttribute("bar2"), "foo", bundle);
override.getAttributes().put("foo", null);
GbeanType gbean = override.writeXml();
assertEquals(3, gbean.getAttributeOrReference().size());
@@ -192,13 +210,80 @@
assertTrue(attribute.isNull());
}
- public interface Service {
+ @GBean
+ public static class TestGBean {
+ private Bean bean;
+ private Service service;
+ private int intvalue;
+ private Collection collection;
+ private String foo;
+ private String bar1;
+ private String bar2;
+
+ public String getFoo() {
+ return foo;
+ }
+
+ public void setFoo(String foo) {
+ this.foo = foo;
+ }
+
+ public String getBar1() {
+ return bar1;
+ }
+
+ public void setBar1(String bar1) {
+ this.bar1 = bar1;
+ }
+
+ public String getBar2() {
+ return bar2;
+ }
+
+ public void setBar2(String bar2) {
+ this.bar2 = bar2;
+ }
+
+ public Collection getCollection() {
+ return collection;
+ }
+
+ public void setCollection(Collection collection) {
+ this.collection = collection;
+ }
+
+ public int getIntValue() {
+ return intvalue;
+ }
+
+ public void setIntValue(int intvalue) {
+ this.intvalue = intvalue;
+ }
+
+ public Service getService() {
+ return service;
+ }
+
+ public void setService(Service service) {
+ this.service = service;
+ }
+
+
+ public Bean getBean() {
+ return bean;
+ }
+
+ public void setBean(Bean bean) {
+ this.bean = bean;
+ }
}
- public static class Bean implements Service {
+ public interface Service {
+ }
+ public static class Bean implements Service {
}
-
+
public static class BeanEditor extends PropertyEditorSupport {
@Override
@@ -212,5 +297,18 @@
}
}
-
+ public static class ServiceEditor extends PropertyEditorSupport {
+
+ @Override
+ public String getAsText() {
+ return "bean";
+ }
+
+ @Override
+ public void setAsText(String text) throws IllegalArgumentException {
+ assertEquals("bean", text);
+ }
+
+ }
+
}